Продвижение комментария для ответа.
Вы говорите, что ваша программа однопоточная, но вы используете только 25% ЦП.
Это признак того, что у вас есть четырехъядерный компьютер,(или, возможно, двухъядерный с Hyper-Threading). В однопоточном режиме вы не можете использовать более 1 ядра.
То, что вы видите, нормально.
В качестве побочного эффекта такие узкие места, как блокировка и доступ к памяти, не уменьшают нагрузку на процессор напрямую.Однопоточная программа, которая тратит все время отсутствующего кэша, будет по-прежнему показывать то же 25% -ное использование (на четырехъядерном процессоре), что и программа, выполняющая реальные вычисления.
В многопоточных приложениях загрузка ЦП можетвлияет, если такие узкие места блокируют запуск других потоков или влияют на балансировку нагрузки.