Многопоточное приложение Cocoa 10.5 работает медленно - PullRequest
1 голос
/ 05 ноября 2008

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

Ответы [ 3 ]

3 голосов
/ 05 ноября 2008

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

2 голосов
/ 05 ноября 2008

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

Акула, конечно же, находится в / Developer / Applications. Если вы не установили CHUD, сделайте это или пропустите.

1 голос
/ 07 ноября 2008

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

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

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

...