[英]Optimizing the print function in Matlab
我维护一个自动化数据摄取的软件包。 导入原始数据时,会对其进行绘图,并将数据的一些图形保存到磁盘。 不幸的是, print
功能大大降低了我的性能。
这是代码性能的细分
Script Time
myscript 9.091s
uichoosefile 3.567s
print 4.178s
legend 0.751s
我的执行时间只有大约 3/4 秒是实际处理时间,而print
是这里最大的时间。
内部print
两行几乎占了 100% 的时间
Line Code Time
212 pj = pj = alternatePrintPath(pj); 3.173s
148 drawnow; 0.751s
如何创建不受这两行限制的优化版本的print
? 诸如降低图形分辨率之类的简单优化例程是不可取的。
Matlab 实际上比较特殊,它很容易优化其内部函数。 我在自己编写的系统生物学建模工具箱中对ode15s
进行了此操作。
这是你自己做的方式:
image_print
。addpath('image_print')
image_print
并为文件指定新名称。 我将其称为printimage.m
。private
的文件夹。 将该文件夹复制到您的新文件夹image_print
。 将名称保留为private
。 现在您可以使用printimage
并对其进行优化,而不会printimage
Matlab 的其余部分。 什么真正有帮助将完全取决于您的实际工作流程,并且需要您相当聪明。 通过使用分析器,您从正确的位置开始。 基本上,您必须通过反复试验找出缓慢的步骤在做什么,然后看看是否有更快的方法来专门为您的工作做到这一点。 原始功能非常通用,因此您将能够剪切整个部分。 不要忘记,您也可以private
修改这些功能。
额外建议:因为您只想将图形保存到磁盘,所以您可能希望专注于防止它们浪费时间实际绘制到屏幕上。 您也许可以完全注释掉drawnow
线,但请报告实际发生的情况。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.