我想計算執行我的程序的某些部分所用的時間(以毫秒爲單位)。我一直在網上查找,但是關於這個話題的信息並不多。你們中的任何人都知道如何做到這一點?以毫秒爲單位計算C程序中的已用時間
回答
C庫有一個函數讓你獲得系統時間。捕捉開始和停止時間後,可以計算經過時間。
該函數被稱爲gettimeofday(),您可以查看手冊頁以瞭解要包含的內容以及如何使用它。
在Windows上,你可以這樣做:
DWORD dwTickCount = GetTickCount();
// Perform some things.
printf("Code took: %dms\n", GetTickCount() - dwTickCount);
不是最普通/優雅的解決方案,但好,見效快,當你需要它。
的gettimeofday
函數返回具有微秒精度的時間(如果平臺可以支持,當然):
的函數gettimeofday()函數將 獲取當前時間,表示爲 秒和微秒自Epoch的 ,並將其存儲在由tp指向的timeval 結構中。未指定系統時鐘的 分辨率爲 。
'gettimeofday' isn對於測量兩個事件之間的經過時間非常有用,因爲系統時鐘可能會在事件之間發生變化(例如,通過NTP更新或簡單的管理員操作)。 (雖然有時它*是最好的東西)。 – caf 2009-09-23 23:14:36
另一個選項(至少在某些UNIX上)是clock_gettime和相關函數。這些允許訪問各種實時時鐘,你可以選擇一個更高分辨率的時鐘,並丟棄你不需要的分辨率。回答
特別是,'CLOCK_MONOTONIC'時鐘,如果您正在運行的系統支持它('sysconf(_SC_MONOTONIC_CLOCK)> 0')。 – caf 2009-09-23 23:16:28
最好的辦法是用一個例子:
#include <sys/time.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
/* Return 1 if the difference is negative, otherwise 0. */
int timeval_subtract(struct timeval *result, struct timeval *t2, struct timeval *t1)
{
long int diff = (t2->tv_usec + 1000000 * t2->tv_sec) - (t1->tv_usec + 1000000 * t1->tv_sec);
result->tv_sec = diff/1000000;
result->tv_usec = diff % 1000000;
return (diff<0);
}
void timeval_print(struct timeval *tv)
{
char buffer[30];
time_t curtime;
printf("%ld.%06ld", tv->tv_sec, tv->tv_usec);
curtime = tv->tv_sec;
strftime(buffer, 30, "%m-%d-%Y %T", localtime(&curtime));
printf(" = %s.%06ld\n", buffer, tv->tv_usec);
}
int main()
{
struct timeval tvBegin, tvEnd, tvDiff;
// begin
gettimeofday(&tvBegin, NULL);
timeval_print(&tvBegin);
// lengthy operation
int i,j;
for(i=0;i<999999L;++i) {
j=sqrt(i);
}
//end
gettimeofday(&tvEnd, NULL);
timeval_print(&tvEnd);
// diff
timeval_subtract(&tvDiff, &tvEnd, &tvBegin);
printf("%ld.%06ld\n", tvDiff.tv_sec, tvDiff.tv_usec);
return 0;
}
- 1. 時間以毫秒爲單位計算
- 2. 時間選擇器以毫秒爲單位以毫秒爲單位計算出錯誤的值
- 3. 如何計算以毫秒爲單位執行時間
- 4. TimePicker以毫秒爲單位倒計時
- 5. 以秒爲單位計算時間差
- 6. Mongodb時間戳,以毫秒爲單位
- 7. 花費時間以毫秒爲單位
- 8. Python:解析時間戳和計算時間差(以毫秒爲單位)
- 9. c中的時間戳以毫秒爲單位精度
- 10. 獲取C中的當前時間(以毫秒爲單位)?
- 11. C++計時系統時間(以毫秒爲單位),時間操作
- 12. 以C代碼計算函數時間(以納秒爲單位)
- 13. 用C#轉換任何時間格式(以毫秒爲單位)
- 14. 使用SPARQL獲取當前時間(以秒/毫秒爲單位)?
- 15. Python:以毫秒爲單位計算日期時間的平均值
- 16. Unity3D C#計時器顯示以毫秒爲單位
- 17. 以毫秒爲單位的序列號
- 18. C++中的時間(NULL)只計算秒數,而不是毫秒
- 19. 帶時間戳的搜索時間(以毫秒爲單位)influxdb
- 20. 典型時間格式的時間(以毫秒爲單位)
- 21. NetStream.seek以毫秒爲單位
- 22. TimeSpan.ParseExact以毫秒爲單位
- 23. 轉換「時間」,「單位」,以毫秒爲單位
- 24. 以毫秒爲單位計算MP3幀的長度
- 25. 以毫秒爲單位計算值的總和
- 26. 以毫秒爲單位創建時間序列
- 27. v $ session_longops TIMESTAMP字段和時間進程以毫秒爲單位
- 28. 以毫秒爲單位的TImespan,以分鐘和秒爲單位
- 29. 如何以毫秒或納秒爲單位在C++中獲取時間
- 30. java將時間戳以秒爲單位轉換爲以毫秒爲單位的時間戳
與常規線重新標記更多。 – dmckee 2009-09-23 21:45:57
hm ...一週前我沒有回答這個問題:http://stackoverflow.com/questions/1444428/time-stamp-in-the-c-programming-language/1445808#1445808 – Christoph 2009-09-23 22:37:19