Дело в том, что приложение медленно обрабатывает изображение. Около 0.5 секунды. При этом процессор загружается всего на 10-15 процентов.
Как заставить его брать больше ресурсов при обработке? Простое выставление приоритетов не помогает. Тут дело в чем то другом.
Здравствуйте, head-dron, Вы писали:
HD>Как заставить его брать больше ресурсов при обработке? Простое выставление приоритетов не помогает. Тут дело в чем то другом.
It depends.
Надо смотреть профайлером/перфмоном на узкие участки, локи, потребление ресурсов. Я бы поставил на многопоточность, но грабли могут быть где угодно: очередь жёсткого, своп, антивирус, кривой image decoder, драйвера видяхи (если декодер использует аппаратное ускорение), сеть, даже грабли с color profile.
А спрашивать лучше не "как бы мне забрать себе всё процессорное время пользователя?", а "как бы мне ускорить обработку?" с обычной петлёй "алгоритм — проверка — оптимизация — проверка — ...".
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, head-dron, Вы писали:
HD>>Как заставить его брать больше ресурсов при обработке? Простое выставление приоритетов не помогает. Тут дело в чем то другом. S>It depends. S>Надо смотреть профайлером/перфмоном на узкие участки, локи, потребление ресурсов. Я бы поставил на многопоточность, но грабли могут быть где угодно: очередь жёсткого, своп, антивирус, кривой image decoder, драйвера видяхи (если декодер использует аппаратное ускорение), сеть, даже грабли с color profile.
S>А спрашивать лучше не "как бы мне забрать себе всё процессорное время пользователя?", а "как бы мне ускорить обработку?" с обычной петлёй "алгоритм — проверка — оптимизация — проверка — ...".
Пытаюсь делать все что в силах чтобы ускорить саму обработку. Уже и LockBits начал использовать, ускорил тем самым обработку раза в 2, а то и в 3.
Здравствуйте, head-dron, Вы писали:
HD>Пытаюсь делать все что в силах чтобы ускорить саму обработку. Уже и LockBits начал использовать, ускорил тем самым обработку раза в 2, а то и в 3.
Тогда проблемы не у вас. Надо смотреть самплинг-профайлером на гормозящий код и следить за количеством переключений из/в user context.
Здравствуйте, head-dron, Вы писали:
HD>Дело в том, что приложение медленно обрабатывает изображение. Около 0.5 секунды. При этом процессор загружается всего на 10-15 процентов. HD>Как заставить его брать больше ресурсов при обработке? Простое выставление приоритетов не помогает. Тут дело в чем то другом.
А логических процессоров, случайно, не 8 (core i7, например)?
Здравствуйте, pr0ff, Вы писали:
P>Здравствуйте, head-dron, Вы писали:
HD>>Дело в том, что приложение медленно обрабатывает изображение. Около 0.5 секунды. При этом процессор загружается всего на 10-15 процентов. HD>>Как заставить его брать больше ресурсов при обработке? Простое выставление приоритетов не помогает. Тут дело в чем то другом.
P>А логических процессоров, случайно, не 8 (core i7, например)?
Здравствуйте, head-dron, Вы писали:
HD>Дело в том, что приложение медленно обрабатывает изображение. Около 0.5 секунды. При этом процессор загружается всего на 10-15 процентов.
Размер изображения ?
Что делается (в общих чертах) ?
Где делается (OnPaint или иное место) ?
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Здравствуйте, head-dron, Вы писали:
HD>>Дело в том, что приложение медленно обрабатывает изображение. Около 0.5 секунды. При этом процессор загружается всего на 10-15 процентов.
PD>Размер изображения ? PD>Что делается (в общих чертах) ? PD>Где делается (OnPaint или иное место) ?
— 640x480
— Поиск автомобильного номера определенного размера на картинке
— Через LockBits (Ибо напрямую GetPixel SetPixel довольно долго работает)
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, head-dron, Вы писали:
HD>>Core 2 Quad S>[К.О.] S>pr0ff намекал, что taskmgr показывает 100% загрузки при занятости _всех_ ядер. S>[К.О.]
S>Вы ведь смотрели на загрузку одного ядра, так?
Здравствуйте, head-dron, Вы писали:
HD> — 640x480 HD> — Поиск автомобильного номера определенного размера на картинке HD> — Через LockBits (Ибо напрямую GetPixel SetPixel довольно долго работает)
Тут уж только под профайлером смотреть, откуда берутся тормоза.
Немного. 32bpp ?
HD> — Поиск автомобильного номера определенного размера на картинке
А вот тут поподробнее, если можно. Что за алгоритм ? Я не прошу детали, но что там — двойной, тройной цикл ?
HD> — Через LockBits (Ибо напрямую GetPixel SetPixel довольно долго работает)
То есть получаешь адрес буфера и копаешься там вручную, так ?
Попробуй вот что. Закомментируй свой код, но оставь LockBits. Вместо своего кода напиши код, который делает с изображением что-то очень простенькое, загружая при этом только процессор (например, суммирует все пиксели, если надо — несколько раз). Задача такова — заменить твой код на что-то такое, что загрузит процессор (ядро) на 100%. Если 100% не получится — сколько получилось ?