Я обнаружил довольно низкую производительность при выполнении некоторого вычислительного кода под 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-летний Core 2 Duo MacBook Pro с частотой 2,4 ГГц, работающий под управлением OS X 10.5, который запускает этот код примерно за 6,8 секунды. Однако на новом Core i7 Dell с частотой 3,4 ГГц, работающем под управлением 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