Многопоточное приложение какао 10.5 работает медленно

Получил приложение для захвата видео какао, которое отлично работает в 10.4. Он использует NSThread для запуска драйвера видеозахвата. Когда приложение только что запущено, захват видео очень медленный (1-2 кадра в секунду). Но после изменения размера окна пользовательского интерфейса (или перевода окна с заднего на передний план) скорость захвата видео возвращается к норме. Это происходит только в 10.5.


person Anthony Lim    schedule 05.11.2008    source источник


Ответы (3)


Не уверен, почему конкретно, но вы должны использовать инструменты, чтобы выяснить, что происходит

person Ana Betts    schedule 05.11.2008

Ответ на «Мое приложение работает медленно» - всегда «Беги, акула». Иногда теперь это «Запуск инструментов», но в большинстве случаев я обнаруживаю, что Shark дает мне ответ быстрее, чем инструменты.

Разумеется, Shark находится в / Developer / Applications. Если вы не установили CHUD, сделайте это, иначе вы упустите.

person Peter Hosey    schedule 05.11.2008

У нас есть приложение, использующее многопоточный захват и запись видео, подобное тому, что вы описываете. Мы используем libdc1394 для захвата с камеры Firewire, NSOpenGLView для отображения и QuickTime для кодирования видео. Захват с камеры находится в отдельном потоке от видеодисплея OpenGL и кодировки QuickTime MPEG4.

Несколько месяцев назад мы перенесли это приложение на Leopard без каких-либо побочных эффектов. Фактически, загрузка процессора при 30 кадрах в секунду видео на Leopard снизилась.

Вы проверили, правильно ли работаете со всеми своими NSLocks и т.п.? Мы столкнулись с проблемами производительности, когда блокировка одного потока останавливала работу другого и, как следствие, снижала нашу частоту кадров. Возможно, вы могли бы рассмотреть возможность установки блокировок только вокруг тех областей, которые в них абсолютно необходимы, или путем реализации безблокирующих версий ваших операций.

person Brad Larson    schedule 07.11.2008