2010-07-01 55 views
0

我需要計算C++程序的執行時間。我目前使用C風格的頭,<time.h>用下面的代碼:使用C++計算執行時間,而不是使用<time.h>

clock_t tStart = clock(); 
... 
printf("Execution Time: %.2fs\n", (double)(clock() - tStart)/CLOCKS_PER_SEC); 

是否有一個C++頭,我可以用它來計算執行時間?請注意,這需要跨平臺兼容。

+1

爲什麼你不想使用time.h? – Salgar 2010-07-01 16:58:02

+0

我不反對它,但我通常不喜歡混合和匹配c和C++代碼。 – Elpezmuerto 2010-07-01 17:00:33

+1

改爲使用。 – 2010-07-01 17:01:47

回答

3

您可以使用C標頭的C++版本。加入「C」開頭,並刪除「.H」

所以你需要

#include <ctime> 

的其餘部分保持不變,因爲你可以使用C的方法。

+2

+1。請記住,如果你使用C++頭文件,這些符號將在'std'命名空間內定義,所以它將成爲'std :: clock' – 2010-07-01 17:16:47

+0

沒錯,我忘了它。 – 2010-07-01 19:30:46

3

時間和時鐘函數是不同平臺之間的事物之一。

我喜歡使用Boost的定時器庫來實現你想要做的事情:http://www.boost.org/doc/libs/1_43_0/libs/timer/timer.htm,因爲它很好地跨平臺,並且使用起來非常簡單。

+0

取決於您是否需要Wall或CPU時間。例如在OpenVMS上,它提供了CPU時間,但在大多數Linux版本中,它提供了延時。 – Salgar 2010-07-01 17:00:17

+0

因爲它們是C標準的一部分,所以'clock()'和'time()'不應該因平臺而異(除了CLOCKS_PER_SEC的值以及它們是否工作)。 – 2010-07-01 17:59:58

+0

@ Mike-我的印象是,正如Salgar指出的,根據實施情況,時鐘和時間在提供CPU時間或掛鐘時間方面可能會有所不同。或者至少在某些時候,我相信這是事實(我很久以前一直在使用boost :: timer很長一段時間,因爲有些問題我很久以前就不記得細節)。 – MarkD 2010-07-01 20:40:37