【问题标题】:Cocoa 10.5 multithread app runs slowlyCocoa 10.5 多线程应用运行缓慢
【发布时间】:2010-09-20 20:01:34
【问题描述】:

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

【问题讨论】:

    标签: cocoa multithreading macos osx-leopard


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      “我的应用程序很慢”的答案总是“Run Shark”。有时,现在是“运行仪器”,但在大多数情况下,我发现 Shark 比仪器更快地给我答案。

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

      【讨论】:

        【解决方案3】:

        我们有一个应用程序,它使用类似于您描述的多线程视频捕获和录制。我们使用 libdc1394 从 Firewire 摄像头进行捕获,使用 NSOpenGLView 进行显示,使用 QuickTime 进行视频编码。来自相机的捕获与 OpenGL 视频显示和 QuickTime MPEG4 编码在单独的线程上。

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

        您是否检查以确保您正确处理所有 NSLock 等?我们遇到了性能问题,一个线程上的锁正在停止另一个线程上的操作,从而降低了我们的帧率。也许您可以考虑只在绝对需要它们的区域周围放置锁,或者通过实施无锁版本的操作。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-07-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-03
          相关资源
          最近更新 更多