[問題] CPU BenchMark 原理 / 實作
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
windows
問題(Question):
前陣子工作是先要測 H.D.D. 在大檔的讀寫速度,(先行的效能瓶頸測試與改善)
我的做法是去 malloc 一大塊記憶體,填值進去,
再以 fwrite / fread 做計時,去算硬碟讀寫速度,
"平均下來" 其實和現有的 benchmark 測出來差不多,
只是不知道是不是因為磁頭硬碟需要 seek time 的關係,
所以測出來的標準差還蠻大的
( 結果還蠻飄的,最極端的例子是第一、二次測的時候是 10MB/s ,
接下來七、八次測的時候是 1xx MB/s ) ,
請問這屬正常情況?如果到時要實際應用的話,我可以先故意對 H.D 先寫一
個大檔做預熱?
----
後來再看其他的 benchmark,還會測 L1, L2, L3 cache latency ,
這點其實我很納悶,一開始初步的想法是,
for(int i = 0 ; i < ARY_SIZE ; ++i)
sum = sum + s[i];
對上述敘述做計時 ,不知道這種設計方式是否可行?
不過最讓我納悶的是,benchmark 測出的 cache latency 精度可以達到 xx ns ,
這點讓我存疑到底準不準,因目前眾所皆知, windows 計時器準度/穩定度有點
待議,目前 wins 最推的大概是 QueryPerformanceCounter , 我覺得要到 ns 有
點勉強," 在想 " 用 rdtsc 加上 SetThreadAffinityMask 不知道辦不辦得到?
另就算辦到了,不知 L1 cache latency / L2 cache latency / L3 cache latency
是怎分開測? source code 架構是否會不同?
--- 綜合問題 ---
1. fwrite / fread 做為 硬碟讀寫速度測試 是否可行
2. cache latency 該如何測試
3. 如何設計測試 L1, L2, L3 cache latency
4. 高精度計時器能否使用 rdtsc + SetThreadAffinityMask 方式達成?
補一下,如果知道一些 benchmark 的 coding 技巧、概念,歡迎分享,
我會非常感激。
謝謝各位不吝指教 感激不盡。
--
就算把新鮮的肝拿回去,還是一樣寫碼到禿頭,加班到天亮,
永遠當老闆的傀儡 你是不是想這麼做?
是的話你就拿回去~ 拿啊!!
九世宅男 : 下輩子不要再讓我幹工程師了 ~
< Kuso 星爺語錄 >
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.177.74.188
※ 編輯: EdisonX 來自: 180.177.74.188 (11/09 18:14)
推
11/09 20:01, , 1F
11/09 20:01, 1F
→
11/09 20:01, , 2F
11/09 20:01, 2F
→
11/09 20:05, , 3F
11/09 20:05, 3F
→
11/09 20:07, , 4F
11/09 20:07, 4F
→
11/09 20:08, , 5F
11/09 20:08, 5F
→
11/09 20:09, , 6F
11/09 20:09, 6F
→
11/09 20:10, , 7F
11/09 20:10, 7F
→
11/09 20:10, , 8F
11/09 20:10, 8F
→
11/09 20:13, , 9F
11/09 20:13, 9F
推
11/09 20:15, , 10F
11/09 20:15, 10F
→
11/09 20:15, , 11F
11/09 20:15, 11F
→
11/09 20:16, , 12F
11/09 20:16, 12F
→
11/09 20:17, , 13F
11/09 20:17, 13F
推
11/09 20:19, , 14F
11/09 20:19, 14F
→
11/09 20:20, , 15F
11/09 20:20, 15F
→
11/09 20:20, , 16F
11/09 20:20, 16F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章
14
30