有很多用于计算代码行的脚本/工具,有些用于计算代码行中的函数大小。 但在这里我正在寻找一种方法来测量生成的代码字节的函数大小。比较代码大小与源代码大小
有没有人知道一种方式/工具从.lib或.dll中提取此信息?
例如,我知道如何从一个的.lib或.dll,他们的起始地址列表功能的名字,但我暂时还没有发现一种方式来获得他们的内存占用。
PS:我寻找在Windows平台上的解决方案,而是一种替代系统上的任何答复是值得欢迎的。
有很多用于计算代码行的脚本/工具,有些用于计算代码行中的函数大小。 但在这里我正在寻找一种方法来测量生成的代码字节的函数大小。比较代码大小与源代码大小
有没有人知道一种方式/工具从.lib或.dll中提取此信息?
例如,我知道如何从一个的.lib或.dll,他们的起始地址列表功能的名字,但我暂时还没有发现一种方式来获得他们的内存占用。
PS:我寻找在Windows平台上的解决方案,而是一种替代系统上的任何答复是值得欢迎的。
我不知道这是相当你以后,但你可以尝试解析映射文件按this tutorial。
另外,如果你是后付费的解决方案,ANTS profiler from Red-gate是合理的。
在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/bin
size
(不是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