2012-11-21 45 views
0
  • 我可以在fseek()函數的幫助下測量代碼大小並將其存儲到shell變量中嗎?
  • 是否可以使用milepost gccGNU Profiler tool來提取代碼大小,編譯時間和執行時間?如果是,如何將它們存儲到shell變量中?

因爲我的目標是在編譯時間,執行時間和代碼大小的基礎上找到最佳的一組優化技術,所以我會期待一些可以返回這些參數的函數。是否有方法/函數來獲取使用GCC編譯器編譯的C程序的代碼大小? (在應用某種優化技術時可能會有所不同)

MyPgm=/root/Project/Programs/test.c 
gcc -Wall -o1 -fauto-inc-dec $MyPgm -o output 
time -f "%e" -o Output.log ./output 
while read line; 
do 
echo -e "$line"; 
Val=$line 
done<Output.log 

這會將執行時間存儲到變量Val。同樣,我想獲得代碼大小的值以及編譯時間。 我會更喜歡我可以做的事情來完成這個任務,而無需使用外部程序!

回答

4

對於linux上的代碼大小,您可以在終端上使用size命令。 $ size file-name.out

它會給出不同部分的大小。使用文本部分代碼大小。如果您還想考慮全局數據大小,則可以使用數據和bss。

+1

如何將文本部分的值存儲到shell變量中? –

1

在非Linux /非GNU-utils的系統(其中可能必須既不GNU size也不readelf),則nm程序可以用於轉儲從對象文件(庫/可執行文件)符號信息(包括尺寸)。語法稍有取決於系統:

不幸的是,雖然該實用程序幾乎在任何地方都可用,但其輸出格式不像可移植的那樣便攜,因此需要某些特定於系統的腳本。

相關問題