為什麼程式執行時間總為0,是我的電腦太快了麼??

時間 2021-06-02 00:38:30

1樓:Sam Richard

用 std::chrono::high_resolution_clock 來計時, 可以精確到us.

auto t1 = chrono::high_resolution_clock::now();

//TODO

auto t2 = chrono::high_resolution_clock::now();

auto time_span = chrono::duration_cast>(t2 - t1);

std::cout << "It took me " << time_span.count() << " microseconds.";

2樓:Coldwings

如果是相容C++11的編譯器,取時間的話用chrono吧……

關於時間複雜度,1微秒為10^-6秒,而講道理qsort這種東西呢是O(nlogn),10^6個數都不超過1秒,而10^5大體上應該也就100毫秒以內,扔進去十來個數應當只有數十微秒的計算時間。

要知道很多非常先進的OS裡(對的就是說windows+cl組合),取到微秒級計時器是需要一些比較非常規手段的,而往往你取到的只是個毫秒計時器,有些所謂微秒級往往只是毫秒乘了個1000,幾乎完全沒有意義。

3樓:SuperSodaSea

把資料量調大一些。還有 GetSystemTimeAsFileTime 可能精度不夠,如果需要精確計時使用 QueryPerformanceCounter 更佳。使用說明見QueryPerformanceCounter function,精度可以達到<1us

示例:LARGE_INTEGERnf,

n1,n2;

QueryPerformanceFrequency(&

nf);

// 獲取計數器頻率

QueryPerformanceCounter(&

n1);

// 獲取開始時間

// ...

QueryPerformanceCounter(&

n2);

// 獲取結束時間

cout

<

long

>(static_cast

>(n2

.QuadPart-n1

.QuadPart)/

nf.QuadPart

*1000000

)<<"us"

<

;n = 10000 時 GetSystemTimeAsFileTime 和QueryPerformanceCounter 測出來分別是 0us 和 1500us左右,這裡 GetSystemTimeAsFileTime 的精度已經不夠用了(話說兩個 dwLowDateTime 直接真的大丈夫麼……以及 FILETME 的單位是100ns)。比 GetSystemTimeAsFileTime 精確到不知道那裡去了(逃

另外之前試過 std::chrono::high_resolution_clock *在某些實現中*似乎有的實現對於需要很精確測速的地方不夠,還得自己用 QueryPerformanceCounter 弄乙個……可以參考一下 @Milo Yip 寫的 Timer 實現:

附:用QueryPerformanceCounter 實現符合concept TrivialClock的真·高精度時鐘與 std::chrono::

high_resolution_clock 的對比

#include

#include

#include

#include

class

HighResolutionClock

};int

main

()編譯器 GCC 5.1.0 ,關閉優化執行,輸出:

std::chrono::high_resolution_clock: 0us或1000us

HighResolutionClock: 在280us上下浮動

C語言能否控制某程式的執行時間呢

譚敘 嗯 不能精確控制,但可以粗略控制。不知道題主了解作業系統有多少。所有程式執行都是由作業系統核心控制的,是在不同的程序中的。所以處於使用者態的一般程式也只能通過核心影響其它程序的執行。於是就會出現程序被排程上CPU,和排程下CPU的情況。所以你不能夠控制你自己的程式在到時間的時候恰好在CPU上面...

Windows 單次執行時間久了為什麼會卡?

不是CPU和記憶體的問題,是硬碟的問題。WIN10用的時候會往虛擬記憶體裡寫東西,特別是在記憶體占用高的情況下,所以讀取的時候很卡。而且一般來說,睡眠後這個問題會更加明顯。下次你卡的時候你開啟任務管理器看一下,硬碟必100 固態還好,機械隨機讀取的時候也就幾M每秒,你那台1T的機械必然是最卡的。我的...

為什麼 2G RAM 的 6S 執行時,剩餘記憶體依然不到 200 MB?

洋芋燉土豆 現在最大的問題就是,ios開始卡了,很多人給出的都是安卓機的答案或者是 不可能 事實就放在那裡,最近幾個月開始很卡,感覺是記憶體邏輯有bug了 Sirius丶白狼 蘋果系統是屬於預先占領一大部分記憶體去處理軟體執行快取等等,就算4g記憶體開機後也剩不下多少可用空間。跟安卓機制不同,安卓是...