Optimization 图形代码大小

Optimization 图形代码大小,optimization,gcc,d3.js,size,gnuplot,Optimization,Gcc,D3.js,Size,Gnuplot,我很好奇是否存在一个现成的脚本,可以为最终的代码大小跟踪工具提供一些起点。首先,我希望能够为许多交叉编译器目标使用各种优化选项来绘制大小图,我很想稍后也将其放在修订时间表上 因此,从size命令获取输出: 文本数据bss dec十六进制文件名 1634 0 128 1762 6e2 csv_data.o(exlibs/libxyz.a) 28 0 0 28 1c csv_data_layer.o(exlibs/libxyz.a) 1063 0 0 1063 427 http_parser.o(e

我很好奇是否存在一个现成的脚本,可以为最终的代码大小跟踪工具提供一些起点。首先,我希望能够为许多交叉编译器目标使用各种优化选项来绘制大小图,我很想稍后也将其放在修订时间表上

因此,从
size
命令获取输出:

文本数据bss dec十六进制文件名 1634 0 128 1762 6e2 csv_data.o(exlibs/libxyz.a) 28 0 0 28 1c csv_data_layer.o(exlibs/libxyz.a) 1063 0 0 1063 427 http_parser.o(exlibs/libxyz.a) 13121010242336920 http_querys.o(exlibs/libxyz.a) 8 36 0 44 2c transport.o(库外/libxyz.a) 1748 0 3688 5436 153c传输层o(exlibs/libxyz.a) 8 0 0 8 8杂项分配器.o(exlibs/libxyz.a) 847 108 1 956 3 BC杂项错误(自由兑换/自由兑换) 0 4 0 4 4 misc_globals.o(自由兑换/自由兑换) 273 0 0 273 111 misc_helpers.o(exlibs/libxyz.a) 71 0 4 75 4b杂项打印文件(自由存盘/自由存盘) 1044 0 44 1088 440杂项时间o(自由兑换/自由兑换) 3724 0 0 3724 e8c xyz.o(库外/libxyz.a) 627 0 0 627 273 dummy.o(自由兑换/自由兑换) 8 16 0 24 18虚拟_layer.o(exlibs/libxyz.a) 123951644889174484428(总计)
当使用各种优化标志(例如:
-Os
-O0
-O1
-O2
)和各种交叉编译器(例如:AVR、MSP430、ARMv6、i386)编译库时,大多数值都是不同的,因此我想使用gnuplot、d3.js、,matplotlib或任何其他软件包。有没有人看过现成的脚本(例如,至少将上述表格格式转换为CSV、JSON或XML)或一些研究论文,其中提供了一个不错的可视化示例?我必须承认,使用web搜索引擎很难找到这一点。

这里有一个可能的可视化数据,即使用
gnuplot
的条形图。这当然不是最终的可视化,但应该是一个很好的起点

set style data histogram
set style histogram rowstacked
set style fill solid 1.0 border lc rgb "white"
set xtics rotate 90
set key outside reverse Left
set bmargin 8
plot 'file.dat' using (!(stringcolumn(6) eq "(TOTALS)") ? column(1) : 1/0):xtic(6) title columnheader(1), \
     for [i=2:5] '' using (!(stringcolumn(6) eq "(TOTALS)") ? column(i) : 1/0) title columnheader(i)
使用设置设置设置端子pngcairo尺寸1000800

您还必须决定要使用哪些列,因为为每个编译器的每个文件绘制每一列将非常混乱。也许您只想绘制尺寸:

set style data histogram
set style histogram clustered
set style fill solid 1.0 noborder
set xtics rotate 90
set key outside reverse Left
set bmargin 8
plot 'file.dat' using (!(stringcolumn(6) eq "(TOTALS)") ? $4 : 1/0):xtic(6) title 'i386', \
     '' using (!(stringcolumn(6) eq "(TOTALS)") ? $4*1.2 : 1/0) title 'ARMv6',\
     '' using (!(stringcolumn(6) eq "(TOTALS)") ? $4*0.7 : 1/0) title 'AVR'
这给了你:

请注意,冗长的
using
语句仅用于跳过最后一行的
TOTAL
。或者,您也可以在生成数据文件时,或在运行过程中,使用
head
删除最后一行:

plot '< head -n -1 file.dat' using 4:xtic(6) title 'i386', \
     '' using ($4*1.2) title 'ARMv6',\
     '' using ($4*0.7) title 'AVR'
使用4:xtic(6)标题“i386”绘制“
当然,对于你的真实数据,你会有

plot '< head -n -1 file-i386.dat' using 4:xtic(6) title 'i386', \
     '< head -n -1 file-armv6.dat' using ($4*1.2) title 'ARMv6',\
     '< head -n -1 file-avr.dat' using ($4*0.7) title 'AVR'
使用4:xtic(6)标题“i386”绘制“

我希望,这能让你了解不同的可视化可能性。什么可能是合适的,你必须自己决定。

D3没有什么“现成的”,但听起来你想要的是一个相当简单的条形图。是的,D3会很好。。。但是其他的绘图工具对我来说也很好;)你看到了吗?这几乎肯定是一种更快的开始方式。