以字节为单位列出优化的二进制函数大小
Listing optimized binary function sizes in bytes
我正在为 MCU 优化我的代码,我想查看我的 C 程序中所有函数的大小概览,包括所有库,例如:
$ objdump some arguments that I do not know | pipe through something | clean the result some how
_main: 300 bytes
alloc: 200 bytes
do_something: 1111 bytes
etc...
$ objdump a.out -t|grep "F .text"|cut -f 2-3
00000000000000b1 __slow_div
00000000000000d8 __array_compact_and_grow
00000000000000dc __log
00000000000000de __to_utf
00000000000000e9 __string_compact
00000000000000fe __gc_release
000000000000001d __gc_check
000000000000001f array_compact
00000000000001e8 __string_split
000000000000002a c_roots_clear
000000000000002f f
000000000000002f _start
000000000000002f wpr
000000000000003d array_get
不完美,大小以十六进制表示,但很容易编写将转换为小数并任意排序的脚本。
nm -S -t d a.out | grep function_name | awk '{gsub ("0*", "", ); print }'
或者为每个交易品种打印一个排序尺寸列表:
nm -S --size-sort -t d a.out | awk '{gsub ("0*", "", ); print " " }'
nm
列出目标文件中的符号。我们正在使用 -S
在第二列中打印已定义符号的大小,并使用 -t d
以十进制格式输出。
我正在为 MCU 优化我的代码,我想查看我的 C 程序中所有函数的大小概览,包括所有库,例如:
$ objdump some arguments that I do not know | pipe through something | clean the result some how
_main: 300 bytes
alloc: 200 bytes
do_something: 1111 bytes
etc...
$ objdump a.out -t|grep "F .text"|cut -f 2-3
00000000000000b1 __slow_div
00000000000000d8 __array_compact_and_grow
00000000000000dc __log
00000000000000de __to_utf
00000000000000e9 __string_compact
00000000000000fe __gc_release
000000000000001d __gc_check
000000000000001f array_compact
00000000000001e8 __string_split
000000000000002a c_roots_clear
000000000000002f f
000000000000002f _start
000000000000002f wpr
000000000000003d array_get
不完美,大小以十六进制表示,但很容易编写将转换为小数并任意排序的脚本。
nm -S -t d a.out | grep function_name | awk '{gsub ("0*", "", ); print }'
或者为每个交易品种打印一个排序尺寸列表:
nm -S --size-sort -t d a.out | awk '{gsub ("0*", "", ); print " " }'
nm
列出目标文件中的符号。我们正在使用 -S
在第二列中打印已定义符号的大小,并使用 -t d
以十进制格式输出。