1

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

所以从size命令中获取输出:

   text    data     bss     dec     hex filename
   1634       0     128    1762     6e2 csv_data.o (ex libs/libxyz.a)
     28       0       0      28      1c csv_data_layer.o (ex libs/libxyz.a)
   1063       0       0    1063     427 http_parser.o (ex libs/libxyz.a)
   1312       0    1024    2336     920 http_queries.o (ex libs/libxyz.a)
      8      36       0      44      2c transport.o (ex libs/libxyz.a)
   1748       0    3688    5436    153c transport_layer.o (ex libs/libxyz.a)
      8       0       0       8       8 misc_allocator.o (ex libs/libxyz.a)
    847     108       1     956     3bc misc_err.o (ex libs/libxyz.a)
      0       4       0       4       4 misc_globals.o (ex libs/libxyz.a)
    273       0       0     273     111 misc_helpers.o (ex libs/libxyz.a)
     71       0       4      75      4b misc_printf.o (ex libs/libxyz.a)
   1044       0      44    1088     440 misc_time.o (ex libs/libxyz.a)
   3724       0       0    3724     e8c xyz.o (ex libs/libxyz.a)
    627       0       0     627     273 dummy.o (ex libs/libxyz.a)
      8      16       0      24      18 dummy_layer.o (ex libs/libxyz.a)
  12395     164    4889   17448    4428 (TOTALS)

-Os当使用各种优化标志(即: 、、、、-O0)和各种交叉编译器(例如:AVR、MSP430、ARMv6、i386)编译库时,大多数值都不同-O1-O2我想做一个组合使用gnuplotd3.jsmatplotlib或任何其他包的图形或图形集。有没有人看过现成的脚本可以部分帮助(例如,至少将上述表格格式转换为 CSV、JSON 或 XML)或一些展示了不错的可视化示例的研究论文?我不得不承认,使用网络搜索引擎很难找到它。

4

1 回答 1

2

这是使用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)

通过设置set terminal pngcairo size 1000,800,这给出了

在此处输入图像描述

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

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'

当然,对于您的真实数据,您将拥有类似

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'

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

于 2013-08-28T09:01:54.260 回答