Вопрос

Как максимально увеличить загрузку процессора моим приложением?Я попробовал установить «В реальном времени» в диспетчере задач, но заметного улучшения не произошло — оно застряло на 50%.

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top