繁体   English   中英

优化Matlab中的打印功能

[英]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进行了此操作

这是你自己做的方式:

  1. 新建一个文件夹。 我将其称为image_print
  2. 将该文件夹添加到 Matlab 路径,以便您可以在任何地方使用它addpath('image_print')
  3. 将要优化的函数复制到新文件夹image_print并为文件指定新名称。 我将其称为printimage.m
  4. 在原始函数所在的文件夹中,会有一个名为private的文件夹。 将该文件夹复制到您的新文件夹image_print 将名称保留为private

现在您可以使用printimage并对其进行优化,而不会printimage Matlab 的其余部分。 什么真正有帮助将完全取决于您的实际工作流程,并且需要您相当聪明。 通过使用分析器,您从正确的位置开始。 基本上,您必须通过反复试验找出缓慢的步骤在做什么,然后看看是否有更快的方法来专门为您的工作做到这一点。 原始功能非常通用,因此您将能够剪切整个部分。 不要忘记,您也可以private修改这些功能。

额外建议:因为您只想将图形保存到磁盘,所以您可能希望专注于防止它们浪费时间实际绘制到屏幕上。 您也许可以完全注释掉drawnow线,但请报告实际发生的情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM