2009-01-04 85 views
2

有很多用於計算代碼行的腳本/工具,有些用於計算代碼行中的函數大小。 但在這裏我正在尋找一種方法來測量生成的代碼字節的函數大小。比較代碼大小與源代碼大小

有沒有人知道一種方式/工具從.lib或.dll中提取此信息?

例如,我知道如何從一個的.lib或.dll,他們的起始地址列表功能的名字,但我暫時還沒有發現一種方式來獲得他們的內存佔用。

PS:我尋找在Windows平臺上的解決方案,而是一種替代系統上的任何答覆是值得歡迎的。

回答

1

在Unix上,size命令爲您提供有關信息:

Black JL: size /usr/lib/libc.so.1 
909301 + 32017 + 6731 = 948049 
Black JL: size ~/lib/libjl.a 
/work1/jleffler/lib/libjl.a[affbak.o]: 4849 + 44 + 4 = 4897 
/work1/jleffler/lib/libjl.a[affstd.o]: 5488 + 48 + 4 = 5540 
/work1/jleffler/lib/libjl.a[base64.o]: 8772 + 9 + 320 = 9101 
/work1/jleffler/lib/libjl.a[basedigit.o]: 841 + 0 + 0 = 841 
/work1/jleffler/lib/libjl.a[basename.o]: 996 + 0 + 0 = 996 
/work1/jleffler/lib/libjl.a[bitmap.o]: 3876 + 8 + 4096 = 7980 
...lots of entries omitted... 
Black JL: size ~/bin/sqlcmd.64 
169694 + 17728 + 8280 = 195702 
Black JL: size cc3e_*.o | so 
cc3e_fixed_from_gregorian.o: 1906 + 0 + 0 = 1906 
cc3e_gregorian_date.o: 684 + 0 + 0 = 684 
cc3e_gregorian_epoch.o: 707 + 0 + 0 = 707 
cc3e_gregorian_from_fixed.o: 1729 + 0 + 0 = 1729 
cc3e_gregorian_year_from_fixed.o: 1625 + 0 + 0 = 1625 
cc3e_last_kday.o: 742 + 0 + 0 = 742 
cc3e_nth_kday.o: 1123 + 0 + 0 = 1123 
Black JL: 

從摟着我的系統半隨機的文件 - 這是運行Solaris 10,使用從/usr/ccs/binsize(不是GNU版本的Sun SPARC,但它可能會給出類似的信息)。

GNU size在Cygwin下稱:

$ size libjl.a 
text data  bss  dec  hex filename 
800  64  16  880  370 affbak.o (ex libjl.a) 
1008  64  16 1088  440 affstd.o (ex libjl.a) 
176  0  0  176  b0 basedigit.o (ex libjl.a) 
208  0  0  208  d0 basename.o (ex libjl.a) 
544  320 4096 4960 1360 bitmap.o (ex libjl.a) 
816  0  16  832  340 block.o (ex libjl.a) 

然而,這可能幫助不大 - 當一個DLL運行(C:\ WINDOWS \ twain.dll),GNU size說,它不承認文件類型。 OTOH,它似乎理解 '的.lib' 文件:

[email protected] /cygdrive/c/notes/jvm/bin 
$ size jawt.lib 
    text data  bss  dec  hex filename 
    63  30  0  93  5d jawt.dll (ex jawt.lib) 
    63  20  0  83  53 jawt.dll (ex jawt.lib) 
    63  8  0  71  47 jawt.dll (ex jawt.lib) 
     8  26  0  34  22 jawt.dll (ex jawt.lib) 

[email protected] /cygdrive/c/notes/jvm/bin 
$ ls -l jawt.lib 
-rwxrwxrwx+ 1 jleffler None 1692 Oct 25 2007 jawt.lib