TL; DR: Estou fazendo um pouco de computação de desempenho e descobri que a máquina ostensivamente "mais fraca" está superando a máquina "mais strong" em ordens de grandeza. Por quê?
Eu escrevi algum código em C para um projeto. Ele envolve 10.000 iterações de um processo demorado que gera dados pseudo-aleatórios e, após cada iteração, grava os dados em um arquivo. Eu usei #pragma omp parallel for
para multi-thread a tarefa.
Eu posso executar meu programa em duas máquinas: vamos chamá-las s e d . Aqui estão as especificações relevantes (por favor, pergunte para quaisquer outras especificações que possam ser importantes):
Aqui está a grande surpresa: s conclui a tarefa uma ordem de grandeza mais rápida do que d . Já executei o programa algumas vezes em ambas as máquinas e s conclui a tarefa em cerca de 3-4 minutos, enquanto d leva de 12 a mais de 30 minutos (Perdi a noção do tempo). Ambos esgotam totalmente seus núcleos (ou seja, todos os núcleos a 100%) durante o processamento. Este fenômeno é mesmo com programas auxiliares (Firefox, etc.) abertos em s , e nada mais sendo executado em d .
Mas o código é o mesmo. Os sinalizadores do compilador são os mesmos. Até a saída é a mesma. Eu mesmo removi as unidades de s e d , e as troquei e depois executei o programa novamente, apenas para testar se não estava de alguma forma relacionado ao Sistema Operacional . O resultado foi que o fenômeno persistiu: o processador quad-core de 2,4 gHZ superou em muito o processador de 3,5 gHZ de oito núcleos.
Isto é, claro, realmente intrigante e totalmente contra-intuitivo. Alguém pode me dizer o que está acontecendo?
Tags performance cpu