CPU性能測試基準(Dhrystone)學(xué)習(xí)
\classic_benchmarks\source_code\dhrystone2 \dhry.h --關(guān)于兼容性的原型定義 \dhry_1.c --主程序入口 \dhry_2.c --算法子程序 如果是移植到ARM Cortex-M平臺下裸系統(tǒng)運行,一般只需要簡單修改dhry.h和dhry_1.c文件即可,Dhrystone本身并沒有太多移植工作,其源碼本是用作在PC上運行的,而在嵌入式系統(tǒng)里運行僅需要把一些文件I/O的相關(guān)代碼刪除即可,此外就是計時函數(shù)和打印函數(shù)的重實現(xiàn)。
MIPS: million instruction per second,表示每秒多少百萬條指令,如 10MIPS , 表示每秒一千萬條指令。 MIPS/MHz : 表示 CPU 在每 1MHz 的運行速度下可以執(zhí)行多少個MIPS , 如 10MIPS/MHz,表示如果 CPU 運行在 1MHz 的頻率下,每秒可執(zhí)行一千萬條指令, 如果 CPU 運行在 5MHz 的頻率下,每秒可執(zhí)行五千萬條指令。 DMIPS: Dhrystone MIPS,并非字面上每秒百萬條指令的意思。 它是一個測量CPU運行一個叫Dhrystone(整數(shù)運算)的測試程序時表現(xiàn)出來的 相對性能高低的一個單位(很多場合人們也習(xí)慣用MIPS作為這個性能指標(biāo)的單位)。缺陷
它的代碼與具有代表性的實際程序代碼并不相同。
Dhrystone代碼量過小,在現(xiàn)代CPU中,它能夠被放進指令緩存中,所以它并不能嚴格的測量取指性能。
它易受編譯器影響。
舉例來說,在Dhrystone中有大量的字符串復(fù)制語句,用來測量字符串復(fù)制的性能。然而Dhrystone中字符串的長度不變,并且均開始于自然對齊的邊界,這兩點便與真實的程序不同。因此一個優(yōu)化性能好的編譯器能夠在去掉循環(huán)的情形下通過一連串字的移動替代對字符串的復(fù)制,這將會塊很多,可能會高達30%。所以我們在編譯測試程序的時候,如果指定編譯器的優(yōu)化等級的話,我們會發(fā)現(xiàn)在不同的優(yōu)化登記下,表現(xiàn)出來的性能指標(biāo)會有差別,優(yōu)化等級越高,性能指標(biāo)越好
源碼獲取*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。