Google AdSense

2014年12月6日 星期六

用 __rdtsc,__cpuid 和 __rdtscp 測量效能的範例

說明

  • 根據 How to Benchmark Code Execution Times on Intel® IA-32 and IA-64 Instruction Set Architectures 這篇文章
  • 這些函數被稱為 intrinsic functions,內建於編譯器,通常比內嵌的組譯語言還快。由於 Microsoft 編譯器不能內嵌 x64 的組譯語言,所以只好使用此種方式

下載

結果

  • Loading hello module...
    loop_size:0 >>>> variance(cycles): 3; max_deviation: 4 ;min time: 44
    loop_size:1 >>>> variance(cycles): 32; max_deviation: 1712 ;min time: 44
    loop_size:2 >>>> variance(cycles): 3; max_deviation: 200 ;min time: 44
    .........
    .........
    loop_size:997 >>>> variance(cycles): 2; max_deviation: 4 ;min time: 44
    loop_size:998 >>>> variance(cycles): 3; max_deviation: 4 ;min time: 44
    loop_size:999 >>>> variance(cycles): 48; max_deviation: 2128 ;min time: 44

    total number of spurious min values = 0
    total variance = 48316
    absolute max deviation = 1537444
    variance of variances = 740609432999
    variance of minimum values = 0

心得

  • 看起來跟內嵌組譯語言的版本完全一樣

資源

沒有留言:

張貼留言