演算法運算時間測量

2022-05-28 10:33:15 字數 1373 閱讀 4052

介紹兩種最常用的針對ti ccs平台dsp開發過程中,演算法執行時間測量的方法。一種是在帶sys/bios系統的專案中使用比較方便,一種是不帶系統裸機程式中使用。兩個測量時間的方式精度都是乙個cycle,如果cpu頻率為1ghz,則乙個cycle為10納秒。只不過處理成毫秒ms,再低意義不大。當然ccs中還自帶profile效能分析器來檢視執行時鐘/週期數,還可以用c標準庫提供的time.h。都是可以,看個人方便。

在cfg配置檔案中開始timestamp模組:var timestamp = xdc.usemodule('xdc.runtime.timestamp');

#include #include 

types_freqhz freq;

uint32 start;

timestamp_getfreq(&freq);

start =timestamp_get32();

////////////////////////////////////

演算法開始

//演算法結束

/////////////////////////////////

/printf("

timestamp1 is %f ms\n\t

", ((double)(timestamp_get32() - start)/(double)freq.lo)*1000);

在c66x core上有兩個計數暫存器tsch/tscl,與cpu同頻,共同表示乙個64bit數,cpu執行乙個cycle,該暫存器加1,因此可以用來準確的測量cpu在個執行段中消耗的cycles。

#include

"

code

"class="

cpp"> unsigned long

long wh_time[10

];

double wh_cost[10

]; tsch = 0

; tscl = 0

; wh_time[

0]=_itoll(tsch, tscl);

////////////////////////////////////

演算法開始

//演算法結束

/////////////////////////////////

/

wh_time[1] =_itoll(tsch, tscl);

wh_cost[

0] = (double)(wh_time[1] - wh_time[0])/1000000.0

; printf(

"times = %f ms\n

",wh_cost[0]);

通過Ethereal測量響應時間

我們在測試過程中有的時候響應時間可以通過客戶端效能測試工具獲得,但是有的時候不能,特別是非同步傳輸的系統,當系統請求發出後系統不是及時響應,而是通過後續的應用獲取資訊,這種情況下現有客戶端效能測試工具很難解決響應時間的衡量。因此在類似於此類測試過程中我們可以通過 ethereal 類似的協議分析工具...

C C 測量時間的幾種方式

共有五種計算時間的方式分別如下 需要包含 large integer a,a nfrequency double timeaccuracy 1000 queryperformancefrequency nfrequency queryperformancecounter a sleep period...

20180129 測量網路斷開時間 txt

20180129 測量網路斷開時間.txt 1.修改相關設定 echo proc sys net ipv4 tcp keepalive xargs n 1 strings 1 f proc sys net ipv4 tcp keepalive intvl 10 proc sys net ipv4 t...