Разочаровывающая производительность в Ubuntu для вычислительной нагрузки

Я обнаружил довольно низкую производительность при выполнении некоторого вычислительного кода под 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

6
задан Sean 16 June 2012 в 15:10
поделиться