Получил приложение для захвата видео какао, которое отлично работает в 10.4. Он использует NSThread для запуска драйвера видеозахвата. Когда приложение только что запущено, захват видео очень медленный (1-2 кадра в секунду). Но после изменения размера окна пользовательского интерфейса (или перевода окна с заднего на передний план) скорость захвата видео возвращается к норме. Это происходит только в 10.5.
Многопоточное приложение какао 10.5 работает медленно
Ответы (3)
Не уверен, почему конкретно, но вы должны использовать инструменты, чтобы выяснить, что происходит
Ответ на «Мое приложение работает медленно» - всегда «Беги, акула». Иногда теперь это «Запуск инструментов», но в большинстве случаев я обнаруживаю, что Shark дает мне ответ быстрее, чем инструменты.
Разумеется, Shark находится в / Developer / Applications. Если вы не установили CHUD, сделайте это, иначе вы упустите.
У нас есть приложение, использующее многопоточный захват и запись видео, подобное тому, что вы описываете. Мы используем libdc1394 для захвата с камеры Firewire, NSOpenGLView для отображения и QuickTime для кодирования видео. Захват с камеры находится в отдельном потоке от видеодисплея OpenGL и кодировки QuickTime MPEG4.
Несколько месяцев назад мы перенесли это приложение на Leopard без каких-либо побочных эффектов. Фактически, загрузка процессора при 30 кадрах в секунду видео на Leopard снизилась.
Вы проверили, правильно ли работаете со всеми своими NSLocks и т.п.? Мы столкнулись с проблемами производительности, когда блокировка одного потока останавливала работу другого и, как следствие, снижала нашу частоту кадров. Возможно, вы могли бы рассмотреть возможность установки блокировок только вокруг тех областей, которые в них абсолютно необходимы, или путем реализации безблокирующих версий ваших операций.