Leopard 10.5.8,XCode 3.1.1;使用runModalForWindow实现(目的是什么)高性能鼠标跟踪机制,我必须进行实时复杂的位图修改。
模态循环运行,计时器触发,鼠标跟踪......但性能极差,并且运行循环时间越长越糟。不是每个像素左右都能捕捉到鼠标信息,而是每隔5 ... 10 ...... 20秒获取一次。
仪器显示,在这个不断增长的响应瓶颈中的大部分时间都花在了mach_msg_trap上(是的,我将视角设置为正在运行的应用程序),所以我的印象是它“认为”它没有尽管事实上我拖着鼠标按下按钮就像一个疯狂的人一样,但还有任何工作要做。没有内存泄漏出现,在我的8核2.8 GHZ机器中,几乎没有CPU活动。
同样,该应用程序并没有在我的代码中花费太多时间......所以这不是我的性能问题。我可能已经配置了一些错误,或者根本没有配置它,或者只是简单地接近整个想法 - 但我肯定会欣赏这里的一些见解。就目前而言,发送鼠标消息和定时器消息是绝对不可接受的。你无法为那些沉浸在冷糖蜜中的人实施一个蜡笔画程序,并且我已经得到了响应时间。
编辑:一些额外的信息:在我的10.5.8 macbook pro上没有发生。只有8核,6显示Mac Pro。我尝试在drawrect中取出croprect的显示代码,用NSLog()替换它...仍然拖延发出鼠标更新。还尝试重新启动并运行,而无需运行通常的应用程序。并配有镜像显示器。没有区别。
想象一下,将画笔拖过屏幕;首先,涂料是平滑的,然后在刷子放置之间出现间隙,然后它们变大,这一直持续到你每10秒钟只有一个刷子放置。这就是这个行为。使用NSlog()和各种其他跟踪方法,我已经确定它至少处于最高级别,因为mouseDragged事件减慢到涓流。简而言之,问题是,为什么会发生这种情况?
任何?
答案 0 :(得分:0)
好吧,隔离它 - 问题来自我的Wacom Tablet鼠标。插入常规光学鼠标,一切运行良好。我的Macbook专业版使用触控板也是如此。工作正常。
平板电脑是Wacom Intuos 4,截止日期为2011年1月。我将前往Wacom网站并报告此事。
真是个噩梦。我已经花了100多个小时在这上面,以为我在应用程序处理,绘图等方面给了一些微妙的细节.Shesh。