打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
gnuplot用于逻辑复杂的高性能软件调试
 在高性能软件调试中,常常面临一个困境,如果性能出现波动或不稳定时,无法通过程序日志来确认原因,因为:

    (1) 即使日志只是序列化到内存中,可是它依然会影响不少性能。

    (2) 即使性能没有受到严重影响,但是,在几十万的性能数据统计中,想要通过普通方式看出问题来,是比较困难的。如果使用平均值,显然是很难观察到波动的。

 

    于是,需要有一种调试方式,即不影响性能,又能将数据可视化,一览于眼底。于是, 使用gnuplot将数据可视化成为一种比较好的解决方式。就如上图中的结果一样,这幅图横坐标表示的是运行某段代码的次序,纵坐标是耗时。从图上我们可以看出在运行到20000次左右时,发生了大量的波动。然后我们可以再细化分析这段代码,再把代码分成几段,再画图,直到找到问题。注:绿色的那条线是平均值。

    我通常用的实施方法是:

    (1)  将程序分成几段关键的代码,对分段进行计时,把每次运行花费的时间记入一个数组中,数组给的大一点,存个十万个或更多,数组循环使用。

    (2) 在发生问题时,将数组的数据导出,再用gnuplot画成图。非常清晰。

    (3) 通过观察图,找出问题所在。

     第三步其实很重要,gnuplot画的图,只是让程序的所有性能点都一五一十的呈现在了你的面前,分析还是得靠自己。主要的技巧是你需要对图中的合理时间值有个估计,不然,当你看到每幅图时,你都有可能认为是合理的,也有可能认为是不合理的。

    注:如果能用INTEL.VTUNE.PERFORMANCE能分析是好事,不过这些工具不是所有的机子都能运行,且有局限性。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Nat Biotech | MIT发布基于Python的高性能基因组分析语言
科学网
我们配电脑做三维设计,显卡、CPU、内存哪个更重要?哪个才最该掏银子?
构建高性能的ASP.NET应用(四)
全面提升系统盘性能
SCI科研工具:用过都说好的绘图软件
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服