Я обнаружил довольно низкую производительность при выполнении некоторого вычислительного кода под Ubuntu на совершенно новой машине без головной рабочей станции, которую я использую для научных расчетов. Я заметил разницу в скорости выполнения некоторого немного сложного кода на Ubuntu по сравнению с моим старым ноутбуком Mac, который я использую для разработки. Однако мне удалось свести все к невероятно простому примеру, который все равно демонстрирует менее чем звездные улучшения по сравнению с моей старой машиной:
#include <stdio.h>
#include <math.h>
int main() {
double res = 0.0;
for(int i=1; i<200000000; i++) {
res += exp((double) 100.0/i);
}
printf("%lf", res);
return(0);
}
Сейчас Mac - это почти 5-летний 2,4 ГГц Core 2 Duo MacBook Pro под управлением OS X 10.5, который выполняет этот код примерно за 6,8 секунды. Однако на совершенно новом 3,4 ГГц Core i7 Dell под управлением Ubuntu 11.10 этот код выполняется примерно за 6,1 секунды! Кто-нибудь может просветить меня, что здесь происходит, потому что это абсурд, что почти 5-летний ноутбук находится в пределах 10% от совершенно новой настольной рабочей станции? Это еще более абсурдно, потому что я вижу, как Core i7 турборазгоняется почти до 4 ГГц с помощью инструментов мониторинга!
Mac скомпилирован с:
gcc -o test test.c -std=gnu99 -arch x86_64 -O2
Ubuntu скомпилирован с:
gcc -o test test.c -std=gnu99 -m64 -O2 -lm
Спасибо,
Louis