CPU Dasher是一款難得的性能測試工具應用。目前僅支持iOS系統。
1.1版本新增特性:
1、支持iOS 6.0
2、支持iPhone 5的4英寸屏幕顯示
3、移除了總線頻率(由於系統調用將返回0)
4、將CPU頻率改為運行時動態計算得出(由於系統調用將返回0),因此用戶在測試設備前先看此頻率是否有異常,由於較新版本的iOS設備都采用了變頻技術,因此一開始所獲得的頻率可能不是最准確的固有頻率。此時,可以先將應用退到后台,然后再重新打開,這將會重新計算當前CPU的頻率。
5、移除了用戶模式下是否可使用監視器。由於此協處理器指令在ARMv7S下也屬於特權指令,在用戶模式下執行會出異常。
6、增加了分頁機制的存儲器頁大小(通常為4KB)
7、增加了存儲器訪問測試
8、增加了存儲器訪問與算術操作相結合的測試
9、矩陣乘法板塊中增加了純ARMv6指令集的測試
另外,ARMv7S仍然不支持VFPv4,FMA等新增指令尚未支持。
------------------------------------------------
CPU Dasher具有三大板塊:
1、設備概述:設備概述囊括了當前iOS設備的系統版本號、設備類型、可用的存儲器大小、是否支持視網膜顯示、MAC地址和IP地址。如果在沒連接網絡的情況下,IP地址顯示0.0.0.0。然后,后面就是比較精彩的部分了,CPU信息。這個是目前App Store中鮮有的,里面包括了CPU類型(ARM、Intel、MIPS等,當然我們這邊肯定都是ARM了,哈哈~)、CPU架構(ARMv7、ARMv7F等)、核心個數、字節序(肯定是小端的)、Cache行大小(有些設備是32字節,有些設備是64字節)、L1指令Cache大小、L1數據Cache大小、L2 Cache大小、L3 Cache大小,然后是CPU主頻、總線頻率,是否在用戶模式下支持性能監視器(一般是不會開放的,呵呵~)。
2、指令周期:指令周期板塊用於實時測量每條指令的執行周期。這里面包含了絕大多數的ARM指令,當然不包括訪存指令以及系統指令,因為訪存操作有太多的外因,不易於衡量;而系統指令對高性能計算沒任何幫助。由於當前的iOS設備所使用的ARM核具有超標量流水線,使得一些基本的算數邏輯操作指令可以在0.5個周期內執行完畢。由於某些設備,如iPhone 4S,它可能使用了變頻技術,使得在某些情況下最小周期數可能會大於最大周期數,在這種情況下,用戶認為最大周期數和最小周期數是等同的。
3、通過矩陣乘法來測試當前設備CPU的計算性能。這里的矩陣規格有5種,分別為:64x64、128x128、256x256、512x512、1024x1024。計算形式有4種,分別是:未優化、存儲器訪問優化、NEON優化、雙核優化。其中,NEON優化基於存儲器訪問優化,而雙核優化基於NEON優化。因此雙核優化即為最快的計算形式。當然,如果你的iOS設備只有一個核心,那么將沒有雙核優化模式。在性能測試時請耐心等待,不要觸摸屏幕,否則對結果可能會有所影響。計算結束后會出結果。最后,最重要的一點是:一般情況下,請不要輕易用Naive和存儲器優化來測1024x1024的矩陣計算,否則可能要等數分鍾。
下面貼出計算64x64矩陣乘法的C代碼,其它優化方式的計算結果與此相同,這些都經過嚴格測試的。
static void NaiveInteger64(const void *pIn1, const void *pIn2, void *pOut) { const int *p1 = (const int*)pIn1; const int *p2 = (const int*)pIn2; int *p3 = (int*)pOut; for(int row = 0; row < 64; row++) { for(int col = 0; col < 64; col++) { int sum = 0; for(int i = 0; i < 64; i++) sum += p1[i] * p2[64 * i + col]; p3[row * 64 + col] = sum; } p1 += 64; } }
App Store下載鏈接:http://itunes.apple.com/us/app/cpu-dasher/id561909183?ls=1&mt=8
(Version 1.1)