簡體   English   中英

測量(配置文件)在Makefile的每個目標中花費的時間

[英]Measure (profile) time spent in each target of a Makefile

有沒有辦法在我完成make all時以遞歸方式回顯Makefile中每個目標所花費的時間(系統,用戶,實際)?

我想以更精細的方式對項目的編譯進行基准測試,而不僅僅是time make all 理想情況下,它會回顯執行目標的樹,每個樹都有在其所有依賴項中花費的時間。 如果它可以與-j (並行make)一起使用也會很棒。 順便說一句,我的Makefile是非遞歸的(不會為每個主要目標生成另一個make實例)。

謝謝!

Gnu Make使用$(SHELL)變量在目標中執行命令。

默認情況下,它設置為/ bin / sh。

您可以將此變量設置為將執行使用“time”命令指定的命令的腳本。 像這樣的東西:

在你的makefile中,在頂部的某處指定SHELL變量:

SHELL = ./report_time.sh

並在文件./report_time.sh中:

#!/bin/sh
shift  # get rid of the '-c' supplied by make.
time sh -c "$*"

將'sh'命令替換為Makefile中指定的原始SHELL(如果有)。

這將報告時間。

但是,這不會告訴您report_time.sh腳本正在運行的目標。 對此的一個解決方案是在makefile中的每個目標條目中添加目標名稱($ @),以便它也將傳遞給report_time.sh腳本。

翻拍--profilemake替代品。 它以callgrind格式生成目標調用樹。

暫無
暫無

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

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