文章目录

我们在软件开发过程中,少不了的是软件性能的测试和相关报告的编写,软件性能的测试往往会生成大量的数据,我们需要用这些数据生成直观的统计图表并用于报告。

生成统计图表有很多,在这里记录我在 SylixOS 实时性测试过程中用到的方法。

SylixOS 实时性测试我做过两种类型:

  1. 在 SylixOS 代码关键处加入 GPIO 引脚输出高低电平的代码,运行时利用示波器测量 GPIO 引脚电平变化的时间,计算机端运行 matlab 通过 USB 连接示波器收集时间数据,matlab 再将这些数据绘制成统计图表;
  2. 利用 cyclictest 测试,cyclictest 会生成统计数据,将统计数据保存为文件,计算机端用 gnuplot 以文件作为输入绘制成统计图表。

方法一示例代码如下:

MSO1000Z = visa('ni','USB0::0x1AB1::0x04CE::DS1ZA154902817::INSTR');

MSO1000Z.InputBufferSize = 2048;

fopen(MSO1000Z);

N = 10000;

delay{1} = 1;
delay{N} = 6;

for i=2:N-1
fprintf(MSO1000Z, ':MEASure:STATistic:ITEM? CURRent,RDELay,CHANnel1,CHANnel2' );
value = fgets(MSO1000Z);
delay{i} = str2double(value) * 1000000;
end

fclose(MSO1000Z);
delete(MSO1000Z);
clear MSO1000Z;

new_delay = cell2mat(delay);

x = sort(new_delay);
y = normpdf(x, mean(x), 0.1);

subplot(211);

plot(x, y);

xlabel('SylixOS响应时间(us)');

生成的统计图表如下:
1.png

方法二示例代码如下:

#!/bin/bash  
gnuplot << FFF
set terminal png truecolor
set output "sylixos_linux+rt_100w.png"
set xrange ["0" : "40" ]
set grid
set title 'Without pressure latency statistics'
set xlabel 'Latency(us)'
set ylabel 'Times'
plot "up/sylixos_100w.txt" with lines, "up/linux+rt_100w.txt"with lines
FFF
echo "the pic have created, named sylixos_linux+rt_100w.png"
exit 0

生成的统计图表如下:

2.png

有了几个两种方法,以后再也不用担心统计图表应该怎么生成了:-)

文章目录