2017-03-20 39 views
0

我試圖測量我的C++程序中的函數的CPU時間。我正在使用boost庫進行此操作。當我運行我的程序但是我得到0秒的結果。我是新來的,如果有人能指出我正確的方向?加速返回0的CPU時間

我該如何使這個返回一個我可以實際使用的時間,比如0.00156什麼的?

代碼:裏面的main()

boost::timer::cpu_timer timer; 

std::cout << tree1.search("Cork") << std::endl; 

//Print CPU TIME 
boost::timer::cpu_times elapsed = timer.elapsed(); 
std::cout << " CPU TIME: " << (elapsed.user + elapsed.system)/1e9 << " seconds" << std::endl; 
+0

如果你寫'double(1e9)'而不是'1e9',會發生什麼? – Xirema

+0

返回相同的結果 –

+0

您是否嘗試打印出'elapsed.user'和'elapsed.system'返回的原始值?你得到了什麼? – Xirema

回答

1

您可以使用boostchrono;

boost::timer::cpu_timer timer; 

std::cout << tree1.search("Cork") << std::endl; 

//Print CPU TIME 
boost::chrono::duration<double> elapsed = boost::chrono::nanoseconds(timer.elapsed().user); 
std::cout << " CPU TIME: " << seconds.count() << "s\n" << " seconds" << std::endl; 
+0

這仍然沒有區別。難道這個功能只是花了足夠長的時間來執行,CPU時間太短而無法顯示? –

+0

@luke_k編輯,現在工作? – Rama

+0

儘管使用'chrono'代替Boost是個好主意。我懷疑它有更好的時間解決方案。我不希望這會產生任何影響。 –