Cocoa 10.5多线程应用程序运行缓慢

时间:2008-11-05 05:37:57

标签: cocoa multithreading macos osx-leopard

有一个Cocoa视频捕获应用程序在10.4中工作正常。它使用NSThread启动视频捕获驱动程序。当应用程序刚刚启动时,视频捕获速度非常慢(1-2 fps)。但在调整UI窗口大小(或将窗口从背景移至前景)后,视频捕获速度恢复正常。这只发生在10.5。

3 个答案:

答案 0 :(得分:3)

不确定具体原因,但你应该使用Instruments来弄清楚发生了什么

答案 1 :(得分:2)

“我的应用程序很慢”的答案始终是“Run Shark”。偶尔,它现在是“Run Instruments”,但在大多数情况下,我发现Shark给了我一个比Instruments更快的答案。

Shark当然是/ Developer / Applications。如果你没有安装CHUD,那就去做吧,或者你错过了。

答案 2 :(得分:1)

我们的应用程序使用类似于您描述的多线程视频捕获和录制。我们使用libdc1394从Firewire相机捕获,NSOpenGLView用于显示,QuickTime用于视频编码。摄像机捕获与OpenGL视频显示和QuickTime MPEG4编码分开。

几个月前,我们将此应用程序迁移到Leopard,没有任何不良影响。事实上,Leopard上每秒30帧视频的CPU负载下降。

您是否检查过以确保您正确处理所有NSLocks等?我们遇到了性能问题,其中一个线程上的锁定停止对另一个线程的操作,从而降低了我们的帧速率。也许你可以看看只在绝对需要它们的地方放置锁或者通过实现无锁版本的操作。