簡體   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