Por que esses benchmarks NÃO saturam a CPU.

Por que esses benchmarks NÃO saturam a CPU.

Executei dois benchmarks triviais em Powershell e C. Executei isso em um i7-2600 razoavelmente bem dotado com 16 Gig Win 7 Pro.

Ambos rodaram usando dois dos 8 núcleos (na verdade, 4 núcleos dual hyper threaded) e rodaram com picos variando de 40% a 70% de utilização durante seu tempo de execução (30 a 60 segundos). O resto do sistema estava silencioso, mas em um domínio e ambos os ambientes de desenvolvimento estavam abertos, assim como o Firefox. A atividade em segundo plano antes e depois das execuções consumia de 1,5% a 2,5% da disponibilidade total da CPU.

O que está acontecendo no Windows que limita esses processos vinculados à computação de fixar a CPU em pelo menos os núcleos em que são executados.

Isso foi para uma demonstração instantânea que fiz e esperava que a CPU fixasse em 100%.

Powershell

$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;
}    

informação relacionada