事實上,我正在計算一個函數在我的程序中完成的時間。 所以我使用邏輯來獲得系統時間,當我調用函數和時間,當函數返回一個值,然後減去我花費時間完成的值。 所以,如果有人能告訴我一些更好的方法,或只是如何在一個實例獲得系統時間,將是相當大的幫助如何在C++中獲取系統時間?
3
A
回答
3
您的問題完全取決於您正在使用的WHICH系統。每個系統都有自己的功能來獲取當前時間。爲了查明系統運行了多久,您需要訪問「高分辨率性能計數器」之一。如果您不使用性能計數器,則通常限於微秒精度(或更差),這在分析函數的速度時幾乎是無用的。
在Windows中,您可以通過'QueryPerformanceCounter()'函數訪問計數器。這將返回每個處理器上不同的任意數字。要找出計數器中有多少個滴答聲,請調用'QueryPerformanceFrequency()'。
如果你在windows以外的平臺下編碼,只需要谷歌性能計數器和你正在編碼的系統,它應該告訴你如何訪問計數器。
編輯(澄清)
這是C++,只包括WINDOWS.H並導入 「KERNEL32.LIB」(似乎已經打消了我的超鏈接,請在文檔:http://msdn.microsoft.com/en-us/library/ms644904.aspx)。對於C#,您可以使用「System.Diagnostics.PerformanceCounter」類。
1
您可以使用time_t
5
定時我的代碼時,我使用的方法是時間( )功能。它會向您返回一個數字值,代表epoch,這使得減法部分更易於計算。
相關代碼:
#include <time.h>
#include <iostream>
int main (int argc, char *argv[]) {
int startTime, endTime, totalTime;
startTime = time(NULL);
/* relevant code to benchmark in here */
endTime = time(NULL);
totalTime = endTime - startTime;
std::cout << "Runtime: " << totalTime << " seconds.";
return 0;
}
請記住,這是用戶的時間。對於CPU,時間見Ben的回覆。
0
在Linux下,嘗試使用gettimeofday()
進行微秒分辨率,或使用clock_gettime()
進行納秒分辨率。
(當然實際的時鐘可有粗糙的分辨率。)
0
在某些系統,您不必訪問time.h中頭部。因此,您可以使用下面的代碼片段來找出程序運行需要多長時間,精確度爲秒。
void function()
{
time_t currentTime;
time(¤tTime);
int startTime = currentTime;
/* Your program starts from here */
time(¤tTime);
int timeElapsed = currentTime - startTime;
cout<<"It took "<<timeElapsed<<" seconds to run the program"<<endl;
}
相關問題
- 1. 如何從系統中獲取時間?
- 2. 在VCS中獲取系統時間
- 3. 在Vxworks中獲取系統時間
- 4. 在iPhone中獲取系統時間
- 5. 如何在PHP中獲取系統時間?
- 6. 如何使用Data.Time.Clock在Haskell中獲取系統時間?
- 7. 如何在Netbeans中獲取系統時間?
- 8. 如何在webservice中獲取系統日期時間
- 9. 獲取系統時間在VB.NET
- 10. 如何在C++中以微秒獲取系統時鐘?
- 11. 如何獲得「當前系統時間」?
- 12. 獲取當前系統日期時間
- 13. 獲取當前系統時間
- 14. 獲取當前系統時間?
- 15. 如何獲取timePicker與系統時間的時差
- 16. 如何獲取系統的日期時間格式在C++ Builder的2009年
- 17. 獲取C#中的實際日期時間而非系統日期時間
- 18. 如何獲取網絡系統日期時間使用該系統的IP
- 19. 無偏時間系統C#
- 20. 更新系統時間C
- 21. 如何獲取系統ioWait
- 22. 發出從系統使用C#獲取當前時間格式
- 23. C++獲取系統時間,以秒數爲單位
- 24. 以C#獲取並設置系統時間
- 25. 如何在MFC(VC++)中獲取系統日期和時間中的AM/PM?
- 26. 如何通過java程序獲取系統登錄時間
- 27. 如何獲取系統日期時間格式?
- 28. 如何獲取當前系統時間(毫秒或納秒)?
- 29. 如何從proc文件獲取系統時間?
- 30. 如何使用Jedis獲取redis服務器的系統時間?
[用C最佳定時的方法?(http://stackoverflow.com/questions/459691/best-timing-method-in-c)的可能重複 – 2012-07-23 01:33:58