簡體   English   中英

我怎樣才能計算我的C程序?

[英]How can I time my C program?

我查看舊線程但找不到我的問題的答案:

如何在C程序中計算函數體?

一個簡單的方法是使用'clock'函數:

#include <time.h>

clock_t start, end;
double cpu_time_used;

start = clock();
... /* Do whatever you want to time */
end = clock();
cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;

或者,如果您使用的是Linux,則可以使用'time'命令來計算應用程序執行所需的時間; 這不允許您為特定的代碼部分計時,並包括啟動該過程所花費的時間等。

time ./myapp

編輯:這是一個非常基本的“快速計時器”。 對於真正的性能分析,你想看看正確的分析器,正如Larry Watanabe所建議的那樣。

這取決於您的編譯器和操作系統。 在Sun工作站上,我曾經使用“prof”或“gprof”。 肯定有適用於您的編譯器,操作系統和機器的分析工具 - 只需谷歌“C profile yourOS yourcompiler”(替換您的操作系統名稱和編譯器)

基本方法是使用clock()函數,這是我們都開始的地方。

例:


clock_t start = clock();
/* Your code */
printf("Time elapsed: %f\n", ((double)clock() - start) / CLOCKS_PER_SEC);

但是,當您開始學習操作系統,硬件,調度程序,多線程等時,您意識到執行時間非常主觀。 當您想要衡量性能(這並不一定意味着執行時間)時,您需要更強大的工具。

Gprof是一個非常容易使用的C profiler,它可以幫助您更好地理解性能概念。

time ./a.out

在一個以上運行,輸出將是:

real    0m0.017s
user    0m0.017s
sys 0m0.000s

real :程序/命令的總結束時間

user :用戶模式下的時間。

sys :內核模式下的時間

不確定C中的特定函數名稱,但通常的做法是在正文開始之前存儲一個微秒時間戳,然后在結尾處抓取另一個並減去。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM