Подтвердить что ты не робот

Максимальное использование процессора

Как максимизировать использование ЦП для моего приложения? Я попытался установить его в "Реальное время" в диспетчере задач, но не было заметного улучшения - он застрял на 50%.

Я работаю в Windows XP с Visual С++ 2005.

4b9b3361

Ответ 1

Я предполагаю, что вы работаете на двухъядерном компьютере. Попробуйте запустить другой поток.

Если в приложении есть только один поток выполнения, его можно запускать только на одном ядре процессора за раз. Решение состоит в том, чтобы разделить работу пополам и получить одно ядро ​​ЦП, чтобы запустить одну половину, а другое ядро ​​- для запуска другой половины. Конечно, вы можете обобщить это для работы с 4 ядрами или более....

Настройка приоритета для вашего приложения будет только перемещать его в очередь, для которой процесс получает первый шанс использовать CPU. Если в режиме реального времени ожидается процессор, он всегда будет получать его до высокого приоритета и так далее в списке приоритетов. Даже если ваше приложение имеет низкий приоритет, оно все же может максимизировать ядро ​​процессора, если у него достаточно работы, и ни один из процессов с более высоким приоритетом не хочет использовать это ядро.

Для введения в многопоточность, проверьте следующие вопросы:

Ответ 2

У вас, вероятно, есть двухъядерный процессор, и ваша программа, вероятно, однопоточная.

Ответ 3

Приоритет будет иметь мало или ничего общего с тем, сколько процессор использует ваш процесс. Это связано с тем, что, если есть что-то доступное для запуска, ОС запланирует его запуск, даже если это низкий приоритет. Приоритет приходит только в том случае, когда есть два или более выполняемых потока. (Примечание. Это предельное упрощение.)

Программы хрустальных номеров, такие как Prime95, запускаются с наименьшим возможным приоритетом и создают несколько потоков для использования всего количества процессоров, как у вас.

Ответ 4

В реальном времени не обязательно будут циклы процессора. Попробуйте нереститься нить или два, или три, которые запускают жесткие петли, которые считаются, наиболее простыми. Если вы хотите (ab) использовать память, вы также можете выделить и освободить некоторые произвольные объекты в своих циклах.