C# Нагрузка на процессор
От: head-dron  
Дата: 22.02.11 08:09
Оценка:
Дело в том, что приложение медленно обрабатывает изображение. Около 0.5 секунды. При этом процессор загружается всего на 10-15 процентов.
Как заставить его брать больше ресурсов при обработке? Простое выставление приоритетов не помогает. Тут дело в чем то другом.
Re: C# Нагрузка на процессор
От: Sinix  
Дата: 22.02.11 08:16
Оценка: +3
Здравствуйте, head-dron, Вы писали:

HD>Как заставить его брать больше ресурсов при обработке? Простое выставление приоритетов не помогает. Тут дело в чем то другом.

It depends.
Надо смотреть профайлером/перфмоном на узкие участки, локи, потребление ресурсов. Я бы поставил на многопоточность, но грабли могут быть где угодно: очередь жёсткого, своп, антивирус, кривой image decoder, драйвера видяхи (если декодер использует аппаратное ускорение), сеть, даже грабли с color profile.

А спрашивать лучше не "как бы мне забрать себе всё процессорное время пользователя?", а "как бы мне ускорить обработку?" с обычной петлёй "алгоритм — проверка — оптимизация — проверка — ...".
Re: C# Нагрузка на процессор
От: adontz Грузия http://adontz.wordpress.com/
Дата: 22.02.11 08:26
Оценка:
Здравствуйте, head-dron, Вы писали:

Операции с диском есть?
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[2]: C# Нагрузка на процессор
От: head-dron  
Дата: 22.02.11 08:31
Оценка:
Здравствуйте, adontz, Вы писали:

A>Здравствуйте, head-dron, Вы писали:


A>Операции с диском есть?


Нет. Изображение уже загружено в память.
Re[2]: C# Нагрузка на процессор
От: head-dron  
Дата: 22.02.11 08:32
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Здравствуйте, head-dron, Вы писали:


HD>>Как заставить его брать больше ресурсов при обработке? Простое выставление приоритетов не помогает. Тут дело в чем то другом.

S>It depends.
S>Надо смотреть профайлером/перфмоном на узкие участки, локи, потребление ресурсов. Я бы поставил на многопоточность, но грабли могут быть где угодно: очередь жёсткого, своп, антивирус, кривой image decoder, драйвера видяхи (если декодер использует аппаратное ускорение), сеть, даже грабли с color profile.

S>А спрашивать лучше не "как бы мне забрать себе всё процессорное время пользователя?", а "как бы мне ускорить обработку?" с обычной петлёй "алгоритм — проверка — оптимизация — проверка — ...".


Пытаюсь делать все что в силах чтобы ускорить саму обработку. Уже и LockBits начал использовать, ускорил тем самым обработку раза в 2, а то и в 3.
Re[3]: C# Нагрузка на процессор
От: Sinix  
Дата: 22.02.11 08:46
Оценка:
Здравствуйте, head-dron, Вы писали:

HD>Пытаюсь делать все что в силах чтобы ускорить саму обработку. Уже и LockBits начал использовать, ускорил тем самым обработку раза в 2, а то и в 3.


Тогда проблемы не у вас. Надо смотреть самплинг-профайлером на гормозящий код и следить за количеством переключений из/в user context.
Re: C# Нагрузка на процессор
От: pr0ff  
Дата: 22.02.11 14:22
Оценка:
Здравствуйте, head-dron, Вы писали:

HD>Дело в том, что приложение медленно обрабатывает изображение. Около 0.5 секунды. При этом процессор загружается всего на 10-15 процентов.

HD>Как заставить его брать больше ресурсов при обработке? Простое выставление приоритетов не помогает. Тут дело в чем то другом.

А логических процессоров, случайно, не 8 (core i7, например)?
... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
Re[2]: C# Нагрузка на процессор
От: head-dron  
Дата: 24.02.11 07:10
Оценка:
Здравствуйте, pr0ff, Вы писали:

P>Здравствуйте, head-dron, Вы писали:


HD>>Дело в том, что приложение медленно обрабатывает изображение. Около 0.5 секунды. При этом процессор загружается всего на 10-15 процентов.

HD>>Как заставить его брать больше ресурсов при обработке? Простое выставление приоритетов не помогает. Тут дело в чем то другом.

P>А логических процессоров, случайно, не 8 (core i7, например)?


Core 2 Quad
Re: C# Нагрузка на процессор
От: Pavel Dvorkin Россия  
Дата: 24.02.11 07:15
Оценка:
Здравствуйте, head-dron, Вы писали:

HD>Дело в том, что приложение медленно обрабатывает изображение. Около 0.5 секунды. При этом процессор загружается всего на 10-15 процентов.


Размер изображения ?
Что делается (в общих чертах) ?
Где делается (OnPaint или иное место) ?
With best regards
Pavel Dvorkin
Re[3]: C# Нагрузка на процессор
От: Sinix  
Дата: 24.02.11 07:34
Оценка:
Здравствуйте, head-dron, Вы писали:

HD>Core 2 Quad

[К.О.]
pr0ff намекал, что taskmgr показывает 100% загрузки при занятости _всех_ ядер.
[К.О.]

Вы ведь смотрели на загрузку одного ядра, так?
Re[2]: C# Нагрузка на процессор
От: head-dron  
Дата: 24.02.11 10:15
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Здравствуйте, head-dron, Вы писали:


HD>>Дело в том, что приложение медленно обрабатывает изображение. Около 0.5 секунды. При этом процессор загружается всего на 10-15 процентов.


PD>Размер изображения ?

PD>Что делается (в общих чертах) ?
PD>Где делается (OnPaint или иное место) ?

— 640x480
— Поиск автомобильного номера определенного размера на картинке
— Через LockBits (Ибо напрямую GetPixel SetPixel довольно долго работает)
Re[4]: C# Нагрузка на процессор
От: head-dron  
Дата: 24.02.11 10:18
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Здравствуйте, head-dron, Вы писали:


HD>>Core 2 Quad

S>[К.О.]
S>pr0ff намекал, что taskmgr показывает 100% загрузки при занятости _всех_ ядер.
S>[К.О.]

S>Вы ведь смотрели на загрузку одного ядра, так?


Скорее я наблюдал нагрузку всех ядер.
Re[3]: C# Нагрузка на процессор
От: hardcase Пират http://nemerle.org
Дата: 24.02.11 10:51
Оценка:
Здравствуйте, head-dron, Вы писали:

HD> — 640x480

HD> — Поиск автомобильного номера определенного размера на картинке
HD> — Через LockBits (Ибо напрямую GetPixel SetPixel довольно долго работает)

Тут уж только под профайлером смотреть, откуда берутся тормоза.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[3]: C# Нагрузка на процессор
От: Pavel Dvorkin Россия  
Дата: 24.02.11 12:38
Оценка:
Здравствуйте, head-dron, Вы писали:

HD> — 640x480


Немного. 32bpp ?

HD> — Поиск автомобильного номера определенного размера на картинке


А вот тут поподробнее, если можно. Что за алгоритм ? Я не прошу детали, но что там — двойной, тройной цикл ?

HD> — Через LockBits (Ибо напрямую GetPixel SetPixel довольно долго работает)


То есть получаешь адрес буфера и копаешься там вручную, так ?

Попробуй вот что. Закомментируй свой код, но оставь LockBits. Вместо своего кода напиши код, который делает с изображением что-то очень простенькое, загружая при этом только процессор (например, суммирует все пиксели, если надо — несколько раз). Задача такова — заменить твой код на что-то такое, что загрузит процессор (ядро) на 100%. Если 100% не получится — сколько получилось ?
With best regards
Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.