Я пишу приложение C++ с помощью Visual Studio 2013. Приложение выполняет итерацию с помощью изображения, выполняющего сложный анализ. Чтобы проверить эффективность кода, я выполняю анализ (скажем) 100 раз и вижу, сколько времени потребуется. Затем я изменяю код, повторно запускаю тест и вижу, есть ли улучшение (или ухудшение) производительности.Максимальное использование ОС Windows 8.1 <= 30%
Проблема в том, что, хотя у меня есть мощный 4-ядерный i5 (i5-4200U @ 1,6 ГГц, чтобы быть конкретным) и достаточное количество ОЗУ, общее использование ЦП не превышает около 30%. Мой процесс никогда не выходит за рамки около 29,5%. Я попытался установить класс приоритета моего приложения на «Высокий» (используя SetProcessPriority), и это не поможет. Существует нулевой диск и сетевой доступ, все в памяти (и около 5 ГБ памяти, чтобы сэкономить).
Является ли это какой-то секретной установкой Windows 8.1 (чтобы сохранить производительность)? Могу ли я изменить это программно или через некоторый апплет панели управления?
В зависимости от того, как вы получаете цифру 30%, это может быть ссылка на долю всего поля: 30% четырехъядерного блока - это одно ядро и бит. Используется ли ваше приложение для использования нескольких ядер? – NPE
Нет, не особо. Я просто прошу Windows «пропустить анализ X раз». Я не думаю, что задача «атомарна» и может быть легко распределена между процессорами. Хм ... это уместно? В диспетчере задач я отмечаю, что использование ЦП для каждого ядра примерно одинаковое. – AlainD
Похоже, ваше приложение не предназначено для использования нескольких ядер и насыщает одно ядро. Чтобы повысить производительность, вам нужно либо сделать однопоточный код более эффективным, либо найти способ использования нескольких ядер. – NPE