對於我的項目我必須使用內聯彙編指令(如rdtsc)來計算某些C/C++指令的執行時間。ARM中是否存在對rdtsc的等效指令?
下面的代碼似乎對英特爾但不能在ARM處理器上運行:
{unsigned a, d;asm volatile("rdtsc" : "=a" (a), "=d" (d)); t0 = ((unsigned long)a) | (((unsigned long)d) << 32);}
//The C++ statement to measure its execution time
{unsigned a, d;asm volatile("rdtsc" : "=a" (a), "=d" (d)); t1 = ((unsigned long)a) | (((unsigned long)d) << 32);}
time = t1-t0;
我的問題是:
怎麼寫類似於上面的內聯彙編代碼(以計算指令的執行已用時間)以在ARM處理器上工作?
多核處理器上的'rdtsc'可能有問題。請參閱https://msdn.microsoft.com/en-us/library/ee417693(VS.85).aspx –
單指令將具有基於緩存等可變計時。更好地循環數千次,它/他們並使用perf_events()通用功能,使其可以在所有支持的CPU上工作。 – BitBank