2012-10-02 75 views
0

我想的是一樣的東西:C++:運行一個量的算法的時間(不計時)

// Runs algorithm() n times during an amount of seconds. 
void run(int seconds) { 
    clock_t start = clock(); 
    clock_t current = start; 
    while(double (current - start)/CLOCKS_PER_SEC <= seconds) { 
    algorithm(); 
    current = clock(); 
    } 
} 

我選擇了clock()time()避免會計時間進程睡眠。 我想知道是否有更好的方法來實現這一點,而不使用chrono

+0

您可以使用更高精度的特定於平臺的工具,例如QueryPerformanceCounter,或者使用[Boost's Timers]進行實驗(http://www.boost.org/doc/libs/1_51_0/libs/timer/doc/) index.html),但我不知道底層實現是否更好。 – chris

+0

您是否想要便攜式解決方案或平臺特定的解決方案? –

+0

爲什麼有人想避免'std :: chrono'? – bames53

回答

2

STLSoft有一個performance_counter可在UNIX和Windows平臺上工作。圖書館只是頭,只需要一個簡單的包括:

#include <platformstl/performance/performance_counter.hpp> 

void run(int seconds) { 
    platformstl::performance_counter pc; 
    platformstl::performance_counter::interval_type current = 0; 
    pc.start(); 
    while ((current/1000) <= seconds){ 
    algorithm(); 
    current += pc.stop_get_milliseconds_and_restart(); 
    } 
} 

你也可以看看自己的提示來源。