当GUI对象的数量变大时,Matlab GUI windowButtonMotionFcn变慢

时间:2014-09-05 03:17:49

标签: performance matlab matlab-guide motionevent processing-efficiency

我正在编写一个Matlab GUI,用于在用户更改光标位置时访问轴上的当前光标点。但是,我发现了一个奇怪的现象,即随着GUI对象数量的增加, windowButtonMotionFcn 的速度变慢。以下是结果

http://i.stack.imgur.com/fwjCK.jpg

我将所有GUI对象的属性设置为默认值,我的操作Matlab版本是Matlab 2012a。当GUI对象的数量增加时,有没有办法保持windowButtonMotionFcn的速度?

感谢您的关注和帮助。 迈里克

3 个答案:

答案 0 :(得分:0)

我不确切知道如何在matlab中实现事件handlig。但是,更多gui对象减慢进程似乎是合理的。可以把它想象成,更多的gui对象需要更多的内存,更多的对象需要处理,更多的代码,更长的列表来搜索...我也经历过使用GUIDE创建的GUI通常比手工制作的GUI慢。无论如何都没有进行测试,因此未经确认。但是,当我在GUI中不需要太多对象时,我通常更喜欢手动创建它们。 GUIDE guis通常更为通用,但在大多数情况下,无论如何只使用了一部分设施。

答案 1 :(得分:0)

尝试使用该图的基础Java框架的 MouseMovedCallback

jFrame = get(handle(hFig), 'JavaFrame'); try % This works up to R2011a jClient = jFrame.fFigureClient; catch try % This works from R2008b and up, up to HG2 jClient = jFrame.fHG1Client; catch % This works in HG2 jClient = jFrame.fHG2Client; end end jWindow = handle(jClient.getWindow, 'CallbackProperties'); set(jWindow, 'MouseMovedCallback', @matlabCallbackFunction);

答案 2 :(得分:0)

“速度减慢”和“内存泄漏”也有类似的问题。

在重绘可见对象之前使用delete(gca)避免了问题。

相关问题