[英]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.