Я провел два простых теста в Powershell и C. Я провел их на достаточно производительном i7-2600 с 16-гигабайтной ОС Win 7 Pro.
Оба запускались с использованием двух из 8 ядер (на самом деле 4 ядра с двойным гиперпотоком) и работали очень пиково, с использованием от 40% до 70% за время выполнения (от 30 до 60 секунд). Остальная часть системы была тихой, но в домене, и обе среды разработки были открыты, как и Firefox. Фоновая активность до и после запусков использовала от 1,5% до 2,5% от общей доступности ЦП.
Что происходит в Windows, что ограничивает эти вычислительно-зависимые процессы, не позволяя им закрепить процессор хотя бы на тех ядрах, на которых они работают?
Это было сделано для демонстрации «на лету» и я ожидал, что процессор загрузится на 100%.
Powershell
$a = 1
"Starting Loop"
get-date
DO
{
$a++
} While ($a -le 50000000)
get-date
С
#include <stdio.h>
#include <time.h>
int main (void) {
long long a;
time_t mytime;
mytime = time(NULL);
printf(ctime(&mytime));
/* for loop execution */
for( a = 1; a < 100000000000; a = a + 1 ){
}
mytime = time(NULL);
printf(ctime(&mytime));
return 0;
}