測量程式的執行時間(二)
安裝 gnomon
又發現一款強大的測量程式的執行時間的工具:gnomon。這個工具軟體應該可以執行在 Windows、MacOS 和 Linux 作業系統上。
在 Arch Linux 作業系統上的安裝方法:
$ sudo pacman -S npm
$ sudo npm install -g gnomon
官方網站的相關內容
gnomon
Utility to annotate console logging statements with timestamps and find slow processes
A command line utility, a bit like moreutils's ts, to prepend timestamp information to the standard output of another command. Useful for long-running processes where you'd like a historical record of what's taking so long.
Example
測試用例(一)
我在“圖靈社群:578. 素數的降冪構成的整數”中提到:
這個程式計算出 C(1013) ≈ 9.2 ×1012,執行時間是 74 秒。
當時是使用 Linux 的 time 命令計時。但是 578.exe 的計算過程分為兩個階段,第一階段做準備工作,生成素數陣列以及計算 π(n) 所需要的陣列。第二階段通過遞迴計算 C(n)。而使用 gnomon 就可以知道這兩個階段各用了多少時間:
第一階段用時 32.9 秒,第二階段用時 41.3 秒,合計用時 74.2 秒。
測試用例(二)
今天上午,盧濤在圖靈社群發表了一篇文章:尤拉計劃30題(加強版)。我把他的程式稍做修改:
1: #include <stdio.h>
2:
3: int sum9(int n)
4: {
5: int sum = 0;
6: for (; n > 0; n /= 10) {
7: int d = n%10, d2 = d*d, d4 = d2*d2;
8: sum += d4 * d4 * d;
9: }
10: return sum;
11: }
12:
13: int main()
14: {
15: int sum = 0;
16: printf("Start\n"); fflush(stdout);
17: for (int i = 2; i <= (int)1e9; i++) {
18: if (sum9(i) != i) continue;
19: sum += i;
20: printf("%d\n", i); fflush(stdout);
21: }
22: printf("[%d]\n",sum); fflush(stdout);
23: return 0;
24: }
執行結果:
- 使用 5.23 秒找出第一個數(146511208)
- 使用 12.98 秒找出第二個數(472335975)
- 使用 2.48 秒找出第三個數(534494836)
- 使用 15.07 秒找出第四個數(912985153)
- 使用 3.46 秒完成 for 迴圈,得到最終結果。
注意,程式必須在一開始就往控制檯寫一行字,這個程式寫的是:Start。這樣,gnomon 就會開始不斷顯示時間,直到找到第一個數,這個 Start 前面的時間就是找到第一個數所用的時間。如果把輸出 Start 的語句刪除,執行結果如下所示:
gnomon 等待 5.23 秒後,直接從 5.23 秒開始顯示,直到 18.21 秒停止顯示,然後另起一行,重新開始顯示。這個 18.21 秒是找到頭兩個數的用時合計。
測試用例(三)
在 Linux 作業系統中,gnomon 可以正常顯示中文:
參考資料
相關文章
- Java如何測量方法執行時間Java
- 如何測量程式碼執行時間
- PAT-B 1026 程式執行時間【時間】
- Linux命令執行時間測試Linux
- Linux 檢視程式啟動時間、執行時間Linux
- Stopwatch 計算程式執行時間
- 1026. 程式執行時間(15)
- 如何測試Linux命令執行時間?Linux
- python程式計算執行時間差Python
- Golang時間函式及測試函式執行時間案例Golang函式
- Java專案計算程式執行時間方法Java
- JavaScript 計算程式碼執行花費時間JavaScript
- 小程式框架執行時效能大測評框架
- linux系統時間程式設計(9) 計算程式片段執行時間clock函式Linux程式設計函式
- python之為函式執行設定超時時間(允許函式執行的最大時間)Python函式
- Java執行緒的CPU時間片Java執行緒
- 正常執行時間監控
- 提高codeing執行時間效率
- MyBatis列印SQL執行時間MyBatisSQL
- sleep 時間段不佔指令碼執行時間指令碼
- **java設定一段程式碼執行超時時間(轉)**Java
- 關於laravel計算程式執行時間的優雅寫法Laravel
- PHP 獲取程式碼執行時間和消耗的記憶體PHP記憶體
- 如何用GNU time查詢Linux命令或程式的執行時間Linux
- 獲取C#中方法的執行時間及其程式碼注入C#
- Linux 中如何設定每個特定的時間執行特定的程式Linux
- oracle查詢sql執行耗時、執行時間、sql_idOracleSQL
- PAT乙級1026程式執行時間(秒數轉換為時間)(值得學習)
- python 程式、執行緒 (二)Python執行緒
- Java併發程式設計(二)如何保證執行緒同時/交替執行Java程式設計執行緒
- 1026 程式執行時間(四捨五入,round函式)函式
- python裝飾器 執行時間Python
- HttpRuntime應用程式的執行時HTTP
- 在 Linux 如何優雅的統計程式執行時間?恕我直言,你執行的可能是假 timeLinux
- 我命由我不由天!如何只讓程式執行指定時間?
- 程式、執行緒、纖程之間的區別?執行緒
- 痞子衡嵌入式:藉助Serial Plot軟體測量i.MXRT系列FlexSPI驅動Flash頁程式設計執行時間Flex程式設計
- 多執行緒的補充 獲取一定時間的執行結果執行緒
- 多執行緒程式設計基礎(二)-- 執行緒池的使用執行緒程式設計