LINUX.ORG.RU
ФорумTalks

VC6.0 vs GCC 3.4.0


0

0

Всем известно, что компиляторы от MS оптимизируют код значительно лучше, чем gcc. Так думал и я до вчерашнего вечера... Вот результаты тестов одной маленькой программки для нахождения простых чисел:

1. Offtopic 2000, VC6.0 оптимизация на скорость, athlon xp 1700, 128M RAM, nice realtime - время выполнения 105 сек.

2. Linux mdk 10.0, gcc 3.4.0 -march=athlon -O3, комп тот же, nice 0 - время выполнения 62 сек (!).

И где хваленое качество кода? Или я чего то не понимаю? Текст программы: /*************************************************************************** * Copyright (C) 2004 by Kostya * * smcr@mail.ru * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/

#include <iostream> #include <cstdlib> #include <time.h> using namespace std;

int main(int argc, char *argv[]) { const unsigned int a( 4000000000UL ),b( (unsigned int)(4001111000UL) ); const unsigned int lb( ((a/3)*3)+4 ),hb( b ); unsigned int o(0),i(0),t(0),simps(0); time_t s,e;

time(&s); for (o=lb;o<hb;o+=2){ i=5; while ( (o%i) && (i<(t=o/i)) ) i+=2; if(i>=t) simps++; o+=4; i=5; while ( (o%i) && (i<(t=o/i)) ) i+=2; if(i>=t) simps++; } time(&e); cout << endl << simps << endl << lb << endl << hb << endl << e-s; return EXIT_SUCCESS; }

Извините, что так все сумбурно - не разобрался с форматированием.

Black_Penguin
() автор топика

Тесты не читал, но не находишь, что сравнивать современный компилятор и компилятор шестилетней давности - слегка некорректно? ;)

WFrag ★★★★
()

>>Всем известно, что компиляторы от MS оптимизируют код значительно >>лучше, чем gcc.
Чего ? Чего нужно курить чтобы это стало известно ? Бредятина какая !

anonymous
()

Всем известно, что gcc делает всех по распространенности, близости к стандарту и оптимизации. Единственный кто подбирается и конкурирует по скорости это Intel C++, однако он проигрывает по всем отстальным пунктам и заточен исключительно под intel.

Viva gcc ! Viva free software ! Viva linux ! Мы лучшие и мы вместе !

anonymous
()
Ответ на: комментарий от Black_Penguin

>Жаль, что у меня нет современного компилятора от MS.

Можешь скачать Visual Studio C++ Express Beta (~70Mb). Вот прямая ссылка (возможно, уже протухла): http://download.microsoft.com/download/1/f/9/1f9c364a-7835-426f-a12e-238bdf8e...

Правда, еще .NET 2.0 Beta нужен... :)

http://download.microsoft.com/download/9/6/6/9666067a-660f-48e0-a755-a83a8103...

>Но факт сам по себе интересный - не находишь?

Звучит как издевательство над gcc :) Типа: "Наконец-то он стал хотя бы VC 6.0 обгонять!"

P.S. Написал тупой тестик (сортировка пузырьком :), gcc(mingw) 3.3.1 выиграл :)

1500 (VS 2005 Express, favor speed) vs 1200 (gcc -O2)

Что, вообще говоря, приятно порадовало :)

Единственное, что в gcc удручает - скорость компиляции. Субъективно VS 2003 раза в 4 быстрее компилирует.

P.P.S. Ну это так, игрушки, конечно. Чтобы говорить уверенно, нужны нормальные тесты.

WFrag ★★★★
()

я ничё не имею против гсс, но надо заметить, что в линухе перфоманц консоли буит побольше, чем кмд.ехе оффтопика. хотя это имхо...

мне надо было когда-то написать програмулину, считавшую 1+2+3+...+n, так при 10-значтом n, на лин считалось около 4 мин /xterm/, а на вин около 6 мин /компилил bcc32 :)/...

Pi ★★★★★
()
Ответ на: комментарий от mikhail

> Формулу 0,5n(n+1) в школе не проходили? :)

умный, да?

ты за меня не переживай: просто там числа должны были быть реализованы списком цифр. реализовав сложение таких цифр просто попробовал - о чём и написал. после добавил умножение и деление ...

... мля, чё я оправдываюсь тут!

Pi ★★★★★
()
Ответ на: комментарий от anonymous

Нахрен нужен современный компилятор.
Под линух довольно часто изпользуютса
gcc-2.91.66
gcc-2.95.3
Например Nvidia с певого на второй
перешли только в последние дрова.

Я имею ввиду полную уверенность в качестве продукта,
которую недает только что выпеченный gcc

anonymous
()
Ответ на: комментарий от anonymous

Ну почему? Непосредственно сейчас посмотреть не могу, но у меня ядро и модули собраны gcc > 3 (наверное, gcc 3.2.3). Не самый последний, но и не 2.95. Так что смысл сравнивать все же есть.

Правда, на 3.4 дистр чувствую очень не скоро перейдет :), там кажется опять бинарную совместимость поломали :)

WFrag ★★★★
()

Малыш, не позорься, попроси у папы с мамой бабчулек и купи себе на горбушке нормальную микрософтовскую студию 2003.

PS.Или качни себе халявный .NET Express.

anonymous
()
Ответ на: комментарий от WFrag

>P.P.S. Ну это так, игрушки, конечно. Чтобы говорить уверенно, нужны нормальные тесты.

Да, здесь даже какие нибудь Drystone или Livermore loop плохо подходят...

Black_Penguin
() автор топика
Ответ на: комментарий от Black_Penguin

2Black_Penguin

Предыдущий анонимус IMHO хам, но Вам, безусловно, не следовало бы столь, скажем, "неосторожный" тест выносить на обсуждение. Это может привести только к дискредитации GCC.

Реально и ocaml может на некоторых задачах обогнать gcc. Будьте аккуратнее. В микрософте не дураки сидят.

Успехов в изучении и использовании gcc!

anonymous
()
Ответ на: комментарий от anonymous

Вдогонку - попробуйте тест Степанова

Попробуйте тест Степанова stepanov.cpp

На форумных "приколистов" не обращайте внимания.

GCC - сейчас единственный de facto компайлер для zLinux. А мэйнфрейм это не "большой писюк", а надёжное и мощное решение.

anonymous (*) (26.07.2004 15:19:14)

anonymous
()

с 2003'м сравнивать надо, в 6.0 компайлер 98'го года! может тогда уж лучше с gcc-2.7 его сравнить? или какой тогда был?

Reset ★★★★★
()
Ответ на: комментарий от WFrag

нафиг какую-то бету качать? компилятор 2003'й можно скачать нормальную версию, а не бету

Reset ★★★★★
()

Всем спасибо за высказанные мнения - в следующий раз приведу более корректные тесты.

P.S. Что за тест Степанова? Где можно посмотреть исходник/идею?

Black_Penguin
() автор топика
Ответ на: комментарий от anonymous

исключительно IMHO (как говорят некоторые - Имею Мнение Хрен Оспоришь). Дык вот - есть программка по вычислению БПФ, в VC 7 (NET) она отрабатывает порядка 150 млс, в RH9 (т. е. компилер даже до 3 не дотягивает, хотя это не существенно) - 98 млс. Оптимизация и там и там была включена. Ассемблерный листинг, взятый из VC 7, на треть длинее, чем от gcc. Как проводилось тестирование, писать не буду - могу только заверить, что все было абсолютно корректно. К сожалению, не смог сравнить результаты с icc с его math библиотеками - пока разбирался, гдето вычитал, что при всем его гемморое, он максимум обгоняет gcc до 30 % на отдельных (!) тестах. Короче, руки прочь от GCC! :-)

Vinill ★★
()
Ответ на: комментарий от Vinill

На степановском тесте gcc 3.2.x ~20% проигрывает vc7. Надо будет попробовать 3.4.

anonymous
()
Ответ на: комментарий от anonymous

>Всем известно, что gcc делает всех по распространенности, близости к стандарту и оптимизации. Единственный кто подбирается и конкурирует по скорости это Intel C++, однако он проигрывает по всем отстальным пунктам и заточен исключительно под intel.

Кстати 50% того же Intel C++ написано русскими из лабораторий Intel в Нижнем-Новгороде...ото таке

skivi
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.