MATLAB:GUI逐渐变慢

fne*_*ery 8 performance matlab user-interface

我一直在编写一些MATLAB GUI(不使用GUIDE),主要用于查看图像和其他一些简单的操作(例如选择点和绘制图像中的一些数据).

GUI启动时,所有操作都会快速执行.但是,由于使用了GUI(显示了来自3D/4D卷的不同帧并执行了上述操作),因此它开始变得越来越慢,达到了普通使用速度太慢的程度.

我想听听一些有关以下方面的意见:

  • 找出GUI变慢的原因的可能策略;
  • 良好的MATLAB GUI编程实践可以避免这种情况;
  • 解决这些问题的可能参考.

我正在使用set/getappdata将变量保存在GUI的主图中并在函数之间进行通信.

(我希望我能提供一个最小的工作示例,但我不认为它适用于这种情况,因为这只发生在更复杂的GUI中.)

非常感谢.

编辑:( 使用探查器报告一些调查结果:)

我曾两次使用剖析器:

  • 启动GUI后立即;
  • 在玩了一段时间之后,直到它开始变得太慢.

我在两个分析操作中都执行了完全相同的过程,这只是简单地在GUI周围移动鼠标(两次都是相同的"路径").

分析器结果如下:

在此输入图像描述

我在解释这些结果时遇到了困难......为什么impixelinfo在第二种情况下某些函数(如)的调用次数如此之大?

任何意见?

非常感谢.

sho*_*zer 1

要找出 Matlab 中速度缓慢的原因,一个好的策略是使用分析器。以下是使用探查器的基本方法:

profile on
% do stuff now that you want to measure
profile off
profile viewer
Run Code Online (Sandbox Code Playgroud)

我建议分析一个新打开的 GUI,以及一个已经打开了一段时间并且速度明显慢的 GUI。然后比较结果并查找“自我时间”或“总时间”显着增加的函数,以找出导致速度减慢的原因。

  • 从 MATLAB Central 找到了一些关于此问题的有用链接:[link1](http://blogs.mathworks.com/videos/2013/05/03/speeding-up-user-interfaces-in-matlab-with-profiler/)和[link2](http://blogs.mathworks.com/community/2011/06/28/speed-up-your-guis-with-profiling/)。 (2认同)