【问题标题】:Matlab GUI windowButtonMotionFcn slows down when number of GUI object gets larger当GUI对象的数量变大时,Matlab GUI windowButtonMotionFcn会变慢
【发布时间】:2014-10-29 22:49:43
【问题描述】:

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

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

我将所有 GUI 对象的属性设置为默认值,我运行的 Matlab 版本是 Matlab 2012a。当 GUI 对象的数量增加时,是否有任何可能的方法来保持 windowButtonMotionFcn 的速度?

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

【问题讨论】:

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


    【解决方案1】:

    我不知道事件handlig 是如何在matlab 中实现的。然而,更多的 gui 对象会减慢这个过程似乎是合理的。可以把它想象成,更多的 gui 对象需要更多的内存、更多的对象要处理、更多的代码、更长的列表来搜索……我还经历过使用 GUIDE 创建的 GUI 通常比手工制作的 GUI 慢。这无论如何都没有经过测试,因此没有得到证实。但是,当我在 GUI 中不需要太多对象时,我通常更喜欢手动创建它们。 GUIDE guis 通常更通用,但在大多数情况下,无论如何只使用部分工具。

    【讨论】:

      【解决方案2】:

      尝试使用该图的底层 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);

      【讨论】:

        【解决方案3】:

        我在“减慢”和“内存泄漏”方面遇到了类似的问题。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-05-06
          • 2014-10-20
          • 2012-05-05
          • 2013-03-06
          • 1970-01-01
          • 2016-01-12
          • 2020-10-10
          • 2013-05-04
          相关资源
          最近更新 更多