我想計算執行我的程序的某些部分所用的時間(以毫秒爲單位)。我一直在網上查找,但是關於這個話題的信息並不多。你們中的任何人都知道如何做到這一點?以毫秒爲單位計算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. TimePicker以毫秒爲單位倒計時
- 4. Mongodb時間戳,以毫秒爲單位
- 5. 花費時間以毫秒爲單位
- 6. Python:解析時間戳和計算時間差(以毫秒爲單位)
- 7. 獲取C中的當前時間(以毫秒爲單位)?
- 8. C++計時系統時間(以毫秒爲單位),時間操作
- 9. NetStream.seek以毫秒爲單位
- 10. 轉換「時間」,「單位」,以毫秒爲單位
- 11. 以毫秒爲單位計算MP3幀的長度
- 12. 以毫秒爲單位創建時間序列
- 13. v $ session_longops TIMESTAMP字段和時間進程以毫秒爲單位
- 14. 以毫秒爲單位的TImespan,以分鐘和秒爲單位
- 15. R 2列之間的時間差(以毫秒爲單位)
- 16. 來自BPM(Midi tempo)的時間間隔(以毫秒爲單位)
- 17. 使用VBScript查找以毫秒爲單位的時間
- 18. C#:WMP,以毫秒/十分之一秒爲單位的時間戳
- 19. 使用bash計算時間(以秒爲單位)
- 20. 程序來計算以秒爲單位的時間不能正常工作
- 21. 毫秒計時C++
- 22. 使用boost :: date_time庫格式化時間以毫秒爲單位
- 23. 使用Powershell查找時間(以毫秒爲單位)?
- 24. 使用本地存儲需要時間以毫秒爲單位
- 25. 如何在AngularJS中以毫秒爲單位獲取時間
- 26. 在SQL Developer中以毫秒爲單位生成總時間
- 27. 如何計算以天/分/秒爲單位的unix時間戳?
- 28. 蟒蛇時間(毫秒)計算
- 29. Linux命令獲取以毫秒爲單位的時間
- 30. 以毫秒爲單位的日期時間選取器
與常規線重新標記更多。 – 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