图表代码大小

时间:2013-08-28 00:33:32

标签: optimization gcc d3.js size gnuplot

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

所以从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-O1-O2)和各种优化标志编译库时,大多数值都不同交叉编译器(例如:AVR,MSP430,ARMv6,i386),我想使用 gnuplot d3.js 制作组合图或一组图, matplotlib 或任何其他包。有没有人有一个现成的脚本可以帮助这部分(例如,至少将上面的表格格式转换为CSV,JSON或XML)或一些提供一个体面的可视化示例的学习论文?我不得不承认,使用网络搜索引擎很难找到它。

1 个答案:

答案 0 :(得分: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,这会给出

enter image description here

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

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'

这给了你:

enter image description here

请注意,冗长的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'

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