Ejecuté dos pruebas triviales en Powershell y C. Ejecuté esto en un i7-2600 razonablemente bien dotado con 16 Gig Win 7 Pro.
Ambos se ejecutaron utilizando dos de los 8 núcleos (en realidad, 4 núcleos con doble hiperproceso) y se ejecutaron a un ritmo muy intenso, con una utilización de más del 40% al 70% durante su tiempo de ejecución (30 a 60 segundos). El resto del sistema estaba silencioso pero en un dominio y ambos entornos de desarrollo estaban abiertos al igual que Firefox. La actividad en segundo plano antes y después de las ejecuciones utilizaba entre el 1,5% y el 2,5% de la disponibilidad total de la CPU.
¿Qué está sucediendo en Windows que limita que estos procesos vinculados a la computación fijen la CPU al menos en los núcleos en los que se ejecutan?
Esto fue para una demostración sobre la marcha que hice y esperaba que la CPU funcionara al 100%.
Potencia Shell
$a = 1
"Starting Loop"
get-date
DO
{
$a++
} While ($a -le 50000000)
get-date
C
#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;
}