在分析演算法的效能時,我們通過演算法的時間複雜度可以從理論上分析出演算法的大致高階,但是當我們想具體比較一下演算法真正的效能時,往往希望在機器上測試並記錄其執行的真實時間,那麼就要用到c/c++中一些高精度時間函式。
微秒
#include
struct timeval
;
獲取時間的函式:int gettimeofday(struct timeval *tv, struct timezone *tz);
demo:
納秒
#include
struct timespec
;
chrono
c++11推出的納秒級時間chrono.
auto start = std::chrono::system_clock::
now();
auto end = std::chrono::system_clock::
now();
auto duration = std::chrono::duration_cast
(end - start)
;// print timediff
std::cout <<
(double
)(duration.
count()
)* std::chrono::microseconds::period::num / std::chrono::microseconds::period::den <<
"s"<< std::endl;
若想簡單的話,可以用精度不太高的系統函式sleep()
和usleep()
實現秒和微秒級定時,如果想高精度定時,查閱了大量部落格發現,基本上都是用章節2中高精度時間來即使,即:
void
timingus
(size_t us)
}
#include
#include
#include
#include
#include
#include
#include
#include
void
timingus
(size_t us)
}void
do_something
(void
)// }
// }
// usleep(1000);
// sleep(1);
timingus
(1000000);
}void
func1
(void
)void
func2
(void
)void
func3
(void
)void
func4
(void
)int
main()
;for
(size_t i =
0; i <
sizeof
(p)/
sizeof
(p[0])
;++i)
return0;
}
c++11 新的計時方法——std::chrono **好
cppreference - chrono
c++11 std::chrono庫詳解
【c/c++】時間精確到微秒、納秒
c linux 獲取納秒時間
c++11 中chrono庫 實現高精度定時
c++11 chrono全面解析(最高可達納秒級別的精度)
c++11 中chrono庫 實現高精度定時
高精度延時
gptx cr暫存器 gptx sr暫存器 gptx pr暫存器分頻 1 設定 gpt1 定時器 首先設定 gpt1 cr 暫存器的 swr bit15 位來復位暫存器 gpt1。復位完成以後設定寄存 器 gpt1 cr 暫存器的 clksrc bit8 6 位,選擇 gpt1 的時鐘源為 ipg ...
vxworks高精度延時
如果支援timestamp,bsp應提供以下函式 systimestampconnect 連線時間戳中斷 systimestampenable 使能時間戳 systimestampdisable 禁止時間戳 systimestampfreq 取得時間戳的頻率 systimestampperiod 取...
32延時us暫存器 高精度延時函式
在後續我們對講解多個感測器,這幾個感測器對時序的要求都比較高,比如溫濕度感測器dh11,檢視晶元手冊時序,至少就需要微秒級的延時函式。延時函式的方式一般有兩種 使用for迴圈的方式,可能會因為硬體的差異,導致延時函式不准,因此這裡我們使用定時器的方式。開啟之前的timers.c檔案,修改timer ...