Vergleichen Codegröße vs Quellengröße
-
03-07-2019 - |
Frage
Es gibt viele Skript / Tools für die Codezeile zu zählen, und einige Funktionen Größe in Bezug auf die Codezeile zu zählen. Aber hier ich bin auf der Suche nach einer Art und Weise Funktion Größe in Bytes des generierten Codes zu messen.
Kennt jemand einen Weg / Werkzeuge, um diese Informationen von einem LIB oder einer DLL zu extrahieren?
Zum Beispiel weiß ich, wie Funktionsnamen zur Liste von einer LIB oder DLL, und ihrer Startadresse, aber ich habe keine Möglichkeit, noch zu bekommen ihren Speicherbedarf gefunden.
. PS: Ich bin Look für eine Lösung auf Windows-Plattform, aber jede Antwort auf ein alternatives System ist willkommen
Lösung
Ich bin mir nicht sicher, es ist ganz das, was Sie nach, aber man könnte versuchen, die Map-Datei per dieses Tutorial .
Auch wenn Sie nach einer Bezahl-Lösung, die ANTS Profiler von Red-Gate angemessen ist.
Andere Tipps
Auf Unix, der size
Befehl gibt Ihnen Informationen über das:
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:
semistochastische Dateien aus um mein System -., Die Solaris Sun SPARC 10, mit size
von /usr/ccs/bin
(nicht der GNU-Version, aber es ist wahrscheinlich ähnliche Informationen geben)
GNU size
unter Cygwin sagt:
$ 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)
Allerdings, die nicht viel helfen kann - wenn sie auf einer DLL ausgeführt (C: \ WINDOWS \ twain.dll), sagt GNU size
es nicht den Dateityp nicht erkennt. OTOH, es scheint ‚Lib‘ Dateien zu verstehen:
jleffler@IBM-027DF09B37F /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)
jleffler@IBM-027DF09B37F /cygdrive/c/notes/jvm/bin
$ ls -l jawt.lib
-rwxrwxrwx+ 1 jleffler None 1692 Oct 25 2007 jawt.lib