LINUX.ORG.RU

Сравнение производительности девяти языков программирования на вычислительных задачах


0

0

Сравниваются девять языков программирования (а точнее говоря, среды программирования, включающие также компилятор/среду исполнения), в том числе gcc/C, java, python и различные Visual ***.

В качестве теста используются простые вычисления -- суммирование первых 10^10 членов расходящегося ряда, вычисление простых тригонометрических функций для первых 10^6 натуральных чисел, а также запись в файл и чтение обратно 10^6 80-символьных строк.

По результатам лидируют диалекты C, версии java отстают от лучшего результата примерно в два раза, вариации питона отстают от java в 8-16 раз.

Забавно, но тест больно уж бестолковый. А первый пример быстрее всего решается в maple ;)

Табличка с цифрами: http://www.osnews.com/story.php?news_...

Начало статьи: http://www.osnews.com/story.php?news_...

>>> Подробности

anonymous

Проверено: svyatogor

объясните не виндос программеру почему VBasic и VJ++ так сильно отстают в I/O тесте ?

Еще вопрос по участникам : а где фортран и интелл компилер ?

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

Тогда уж спросите еще зачем включили питон.

Автор теста в первой части статьи говорит его интересовало что-то про .NET, мол там один (достаточно простой) алгоритм записанный на разных языках компилится в идентичный байткод. Поэтому задача и "вычислительная". А java и питон были взяты как альтернативные языки с компиляцией в байткод. Наверное и перл бы подошел.

Интересно было бы потестиь питон/lisp/etc на чем-нибудь хитро-комбинаторном, типа перебора плоских карт с заданными свойствами, чтобы были сломжные структуры данных и рекурсия.

И отдельно оценивать время написания кода и отладки.

anonymous
()

Тупость процветает...

> C: compiled with gcc -march=pentium4 -msse2 -mfpmath=sse -O3 to optimize for my CPU, enable SSE2 extensions for as many math operations as possible

Еще один пионер, думающий, что стоит только сказать -msse2, так сразу эти инструкции задействуется... ( А дурные авторы CLN на кой-то ляд ковыряются с inline asm'-ом )

Dselect ★★★
()

>C: compiled with gcc -march=pentium4 -msse2 -mfpmath=sse -O3 -s -mno-cygwin to optimize for my CPU, enable SSE2 extensions for as many math operations as possible

исчо один чайник .... c SSE2 ;)

BTW:

- оригинальная оптимизация - ss@xantippe:~/Benchmark$ ./Benchmark Start C benchmark Int arithmetic elapsed time: 9340 ms with intMax of 1000000000 i: 1000000001 intResult: 1 Double arithmetic elapsed time: 8750 ms with doubleMin 10000000000.000000, doubleMax 11000000000.000000 i: 11000000000.000000 doubleResult: 10011632717.388229 Long arithmetic elapsed time: 28980 ms with longMin 1410065408, longMax 2 i: -1884901888 longResult: 776627965 Trig elapsed time: 5300 ms with max of 10000000 i: 10000000.000000 sine: 0.990665 cosine: -0.136322 tangent: -7.267119 logarithm: 7.000000 squareRoot: 3162.277502 I/O elapsed time: 1450 ms with max of 1000000 last line: abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefgh Total elapsed time: 53820 ms Stop C benchmark

--- агрессивная оптимизация ------

ss@xantippe:~/Benchmark$ ./Benchmark-OPt Start C benchmark Int arithmetic elapsed time: 100 ms with intMax of 1000000000 i: 1000000001 intResult: 1 Double arithmetic elapsed time: 8120 ms with doubleMin 10000000000.000000, doubleMax 11000000000.000000 i: 11000000000.000000 doubleResult: 10011632717.502439 Long arithmetic elapsed time: 28300 ms with longMin 1410065408, longMax 2 i: -1884901888 longResult: 776627965 Trig elapsed time: 4090 ms with max of 10000000 i: 10000000.000000 sine: 0.990665 cosine: -0.136322 tangent: -7.267119 logarithm: 7.000000 squareRoot: 3162.277502 I/O elapsed time: 1450 ms with max of 1000000 last line: abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefgh Total elapsed time: 42060 ms Stop C benchmark

-----------------

Разница ~ 22%

для справки - машинка AthlonXP 1600+/384Mb

Про "счетные задачи" это даже уже не смешно ...

>About the author: >Christopher W. Cowell-Shah works in Palo Alto as a consultant for the >Accenture Technology Labs (the research & development wing of >Accenture). He has an A.B. in computer science from Harvard and a Ph.D. >in philosophy from Berkeley. Chris is especially interested in issues in >artificial intelligence, human/computer interaction and security. His website >is www.cowell-shah.com.

Вообще говоря стыдно за Беркли .

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

gcc vs visual c

2 alphex_kaanoken:

> да и не вериться что что-то там visual лучше gcc

Я знаю, что компилер от m$ плох, но не на столько же, что gcc лучше него собирает win32 бинарники...

Dselect ★★★
()

Мдя...

Start C benchmark
Int arithmetic elapsed time: 11086 ms with intMax of 1000000000
 i: 1000000001
 intResult: 1
Double arithmetic elapsed time: 10875 ms with doubleMin 10000000000.000000, doubleMax 11000000000.000000
 i: 11000000000.000000
 doubleResult: 10011632717.495501
Long arithmetic elapsed time: 36836 ms with longMin I64d, longMax I64d
 i: I64d
 longResult: I64d
Trig elapsed time: 4688 ms with max of 10000000
 i: 10000000.000000
 sine: 0.990665
 cosine: -0.136322
 tangent: -7.267119
 logarithm: 7.000000
 squareRoot: 3162.277502
I/O elapsed time: 1250 ms with max of 1000000
 last line: abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefgh

Total elapsed time: 64732 ms
Stop C benchmark

CPU: iCel-1700 (100MHz)
MEM: DDR 512M (133MHz)
HDD: WD 80G
OS:  FreeBSD 5.2-CURRENT #1: Sat Dec 13 21:39:04 EET 2003
FS:  UFS2
GCC: gcc version 3.3.3 [FreeBSD] 20031106

Собрано с теми ключами что и в статье.

PS Винда таки не просто тормоз, а вообще эстонская.

Woody
()
Ответ на: gcc vs visual c от Dselect

>Я знаю, что компилер от m$ плох, но не на столько же, что gcc лучше него собирает win32 бинарники...

так в этом то и дело, пишу кроссплатформенную приблудину, посмотрел и тихо с кресла свалился, не думал что m$ совсем уж полный sucks

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

Это точно. Все сишники сдохнут от безработицы. Для Java программеров
работы немеряно. С/C++ - RIP

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

>Это точно. Все сишники сдохнут от безработицы. Для Java программеров работы немеряно. С/C++ - RIP

а ядро тоже на жабке писать будем ??? =)

зы - глупые они пркладники =)

alphex_kaanoken ★★★
()

Start C benchmark
Int arithmetic elapsed time: 11187 ms with intMax of 1000000000
 i: 1000000001
 intResult: 1
Double arithmetic elapsed time: 10984 ms with doubleMin 10000000000.000000, doubleMax 11000000000.000000
 i: 11000000000.000000
 doubleResult: 10011632717.495501
Long arithmetic elapsed time: 29954 ms with longMin 10000000000, longMax 11000000000
 i: 11000000000
 longResult: 776627965
Trig elapsed time: 20171 ms with max of 10000000
 i: 10000000.000000
 sine: 0.990665
 cosine: -0.136322
 tangent: -7.267119
 logarithm: 7.000000
 squareRoot: 3162.277502
I/O elapsed time: 17469 ms with max of 1000000
 last line: abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefgh

Total elapsed time: 89765 ms
Stop C benchmark

CPU: iCel-1700 (100MHz)
MEM: DDR 512M (133MHz)
HDD: WD 80G
OS:  Windows 2000 SP1
FS:  NTFS
GCC: gcc version 3.3.1 (mingw special 20030804-1) (mingw32, кросс-компиляция из-под FreeBSD под win32)

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

>Это точно. Все сишники сдохнут от безработицы.

Дык сишники не всегда похожи на этого автора тестов ;)

Там где действительно нужна скорость Java пока что отдыхает ;)

(у меня на этом тесте она проиграла сям в ~4.5 раза)

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

Я тут одного "кул программера" на VB.Net спросил про IPC виндовые,
так он сказал "А что ето такое?". Так что безработицы пока не боюсь.

sabonez ★☆☆☆
()

2All приветствую.
Плакали мои тапки горькими слезами ... Куда мир катиться!!!
2Ss а это нормально что там /за бугром / до таких тестов додумываются ?)))
сегодня узнал интересную вещь - nt4.0 оказывается процесс можно в realtime запустить ... )))) в task manager.
$echo.

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

> nt4.0 оказывается процесс можно в realtime запустить ... )))) в task manager.

Дык эта фича была у рихтера описана ;) Он правда говорил что так как драйвера мыши и клавиатуры работает с более низким приоритетом это будет последнее что вы успеете сделать на NT-шке ;)

>2Ss а это нормально что там /за бугром / до таких тестов додумываются ?)))

...А еще у них есть степень "доктор женских наук" ;)

ImHO это гримасы политкорректности - типа не принято посылать оппонента в лес ;)

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

"Дык эта фича была у рихтера описана ;) Он правда говорил что так как драйвера мыши и клавиатуры работает с более низким приоритетом это будет последнее что вы успеете сделать на NT-шке ;) "
я тут матрицу 1152x1152 собственные значения/вектора ищу ... ничего, поку покурил - энтя одыбалась ) это благо что imsl юзаю, шустрее прога работает ) а так бы до утра завтрашеного дня прищлось оставлять vmware ).
распечатал этот тест .. может за чашкой кофе дома на фортране нарисую)
С уважением,$echo.
P.s. про IA64 - я ответил ). Только вопрос - почему не воспользоваться бы готовым решением от СуСе или Шапки ?

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

>а что если шина 100 МГц, то память все равно может на 133 работать?

Разумеется ;)

Сюрприз ? ;)

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

>P.s. про IA64 - я ответил ). Только вопрос - почему не воспользоваться бы готовым решением от СуСе или Шапки ?

Дык воспользоваться то можно - только пока MOSIX не портирован на 64 бита толку МНЕ от этого будет не слишком много - лень перенастраивать pvmd. Посмотрю что можно будет выжать из 32-бит

Хотя поднять на одном из узлов 64-битку "на попробовать" надо бы ...

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

>> Это точно. Все сишники сдохнут от безработицы.

> Дык сишники не всегда похожи на этого автора тестов ;)

Тада. C-шники никогда без работы не останутся. Может эта область и станет узкой, но это только к добру (зато явочников расплодится :)

> Там где действительно нужна скорость Java пока что отдыхает ;) > (у меня на этом тесте она проиграла сям в ~4.5 раза)

Хорошо тебе, у меня под FreeBSD java проползла по полной программе. 70/178/150/77/300 (Int/Double/Long/Trig/IO)

java version "1.3.1-p8" Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1-p8-root-030726-14:32) Classic VM (build 1.3.1-p8-root-030726-14:32, green threads, nojit)

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

>green threads, nojit
^^^^^^^^^^^^^^^^^^^^ Чего - ж тут удивлятся ;)

BTW: 
ss@xantippe:~$ java -version
java version "1.4.2_01"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_01-b06)
Java HotSpot(TM) Client VM (build 1.4.2_01-b06, mixed mode)


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

2Woody:
Понятное дело, ты посмотри на параметры:
green threads, nojit
С таким делом она не то что поползет а вообще никуда не пойдет.
И вообще на сколько я знаю, под фри нет нативной явы, есть глубокая бета от самих freebsd.org и есть сановская, которая работает под линукс-эмуляцией.

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

Я тут одного "кул программера" на Perl'e спросил про маршалинг и ремоутинг, так он сказал "А что ето такое?". Так что безработицы пока не боюсь.

anonymous
()

http://img.osnews.com/img/5602/results.jpg

еще раз внимательно смотрим на описание осей - видим там секунды, то есть МЕНЬШЕ - ЗНАЧИТ ЛУЧШЕ, иными словами жаба сосет, Visual C++ лучший, gcc хуже MS компилера, что не очень удивительно.. а вообще жалко что так мало участников, мало производителей компилеров, нету фортранов, паскалей, перла, пхп и пр. Такое ощущение что питон взяли специально для сравнения, как заведомого тормоза :)

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

> еще раз внимательно смотрим на описание осей - видим там секунды, то
> есть МЕНЬШЕ - ЗНАЧИТ ЛУЧШЕ, иными словами жаба сосет, Visual C++
> лучший, gcc хуже MS компилера, что не очень удивительно.. а вообще
> жалко что так мало участников, мало производителей компилеров, нету
> фортранов, паскалей, перла, пхп и пр. Такое ощущение что питон взяли
> специально для сравнения, как заведомого тормоза :)

А если еще раз внимательно посмотреть, то будет видно, что Java рулит во всем, кроме тригонометрических функций (что, кстати легко объясняется и в следующей версии будет исправлено - виртуальная машина не использует нативные триг. функции). И рулит реально даже в сравнении с самым быстрым VC++.

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

> спросил про маршалинг и ремоутинг

А про лапшинг наушинг ты никого не спрашивал?

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

> Java рулит во всем, кроме тригонометрических функций

а вот мне синусы-консинусы важны, хотя в общем замечание верное..

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

Start C benchmark
Int arithmetic elapsed time: 10370 ms with intMax of 1000000000
 i: 1000000001
 intResult: 1
Double arithmetic elapsed time: 7590 ms with doubleMin 10000000000.000000, doubl
0000.000000
 i: 11000000000.000000
 doubleResult: 10011632717.409952
Long arithmetic elapsed time: 28720 ms with longMin                             
              1410065408, longMax                                               
     2
 i:                                                      -1884901888
 longResult:                                                        776627965
Trig elapsed time: 6560 ms with max of 10000000
 i: 10000000.000000
 sine: 0.990665
 cosine: -0.136322
 tangent: -7.267119
 logarithm: 7.000000
 squareRoot: 3162.277502
I/O elapsed time: 1820 ms with max of 1000000
 last line: abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz123456
Total elapsed time: 55060 ms
Stop C benchmark


Это на стареньком атлоне тандерберде, 1333 (sdr512Mb)
gcc version 2.95.4 20011002 (Debian prerelease), з запущенными иксами (мозилла с десяток табов + xmms музычку играет, кучка графических аплетов в афтерстепе справа рендерит красивости)
Вот я и думаю... Почему это у товарища с gcc version 3.3.3 и iCel-1700 тест занял 64732 ms ? 

anonymous
()

Эта... Ну вы чего... java 1.3.1 санками под фрю сертифицирована (т.е. сто лет не бета), а без OpenJIT фрипацаны жаву не юзают :)

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

Маршалинг и ремоутинг - это красивые названия M$ того, что раньше называлось Corba :-). Только backend они поменяли, который по-умолчанию. Поставь BinaryFormatter по-умолчанию, и получишь кое-какое подобие.

IPC - это база, обмен сообщениями между процессами. Для этого программы _не должны_ быть написаны с использованием специальных технологий... Хотя что это я распинаюсь? Понятие "семафор" не входит в круг знаний истинного приверженца .НЕТ :-) (судя по их мануалу, ничего личного)

adarovsky ★★★★
()

Объясните мне,глупому, каким это образом компилируемые ся оказываются медленнее, чем наполовину интерпритируемая ява?

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

А я тут одного "кул программера" на всём попросил взять ля третьей октавы. А он мне: "а что это такое?". Так что безработицы пока не боюсь.

//Losiki

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

А что, C# более компилируем чем Java?

anonymous
()

Та гавно этот тест. Если они уже цифири вычисляют, то лучше бы протестировали и Ruby сразу - сам автор Ruby пишет, что он быстро числа считает - а так это получается тест из разряда "мы сравнили то, что было под руками, и о чем не забыли, и что оно получилось - фиг его знает, но табличку мы состряпали". Suxxx... очередная заказная статья журналистов-раздолбаев, которым просто надо для отчетности написать хоть о каком-либо сравнении, результаты которого можно сразу забыть. К тому же Python вроде и не позиционируют для вычислительных целей, и там можно написать два кода, которые делают одну и туже задачу, но скорость будет раз в 10-ть различаться...

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

> Объясните мне,глупому, каким это образом компилируемые ся оказываются медленнее, чем наполовину интерпритируемая ява?

Объясняю: ява уже давным давно не интерпретируемая, просто она компилится не руками а автоматом (есть такая вещь - JIT-compiler - just-in-time compiler, т.е. по русски - компилятор, который во время выполнения программы компилит её в нативный код).

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

> gcc version 2.95.4 20011002 (Debian prerelease), з запущенными иксами (мозилла с десяток табов + xmms музычку играет, кучка графических аплетов в афтерстепе справа рендерит красивости) Вот я и думаю... Почему это у товарища с gcc version 3.3.3 и iCel-1700 тест занял 64732 ms ?

известная фича - они в 3.X стали добиваться соответствия последним стандартам, и переписывают сам компилятор - слышал, что в 3.4X уже наконец-то вернется нормальная скорость :)

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

>Еще вопрос по участникам : а где фортран и интелл компилер ?

И где асемблер? :))

Бред все это! Для каждой задачи свой язык/среда программирования. Оптимизировать надо стоимость, а не скорость умножения. А стоимость складывается из кучи всего, причем скорость вычислений есть фактор маловлияющий на стоимость. Скорость может быть интнрнсна для программ массового обслуживания OS/SQL/HTTP/... Ну еще для числодробилок некотороых. Мне, например, побарабану 6, или 8 часов будет расчитываться пространственная конструкция, ибо я данные для расчета готовлю пару недель, а потом обрабатываю результаты расчета еще несколько недель. А вот для КИС важнейшим является стоимость разработки и сопровождения, а если вычислительной мощности хватать не будет, так жалезку соответствующую купим, ее стоимость в стоимости проекта и 5% не паскребет. Хрень какая-то эти пузомерки, Ни о чем, и ни про что.

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

> Скорость может быть интнрнсна для программ массового обслуживания OS/SQL/HTTP/... Ну еще для числодробилок некотороых.

Речь вроде как раз о числодробилках? "производительность на вычислительных задачах" - это что?

Другое дело, что тесты странные и языки для тестирования странно выбраны.

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

>Другое дело, что тесты странные и языки для тестирования странно выбраны.

Другое дело что этот тест ровным счетом показывает абсолютный бред, странная подборка компиляторов и странные результаты ИМХО нереальные.

По сему в печку

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

Я это и имел ввиду, только высказался мягче :)

Vond ★★
()

Бред!

Самая рулёзная Java - IBM!!! Где она?

"Все это есть глюк, бред и фильм Тарковского!" (с)

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

Sorry, точная цитата:

"Сие есть сон, глюк и фильм Тарковского" (с)

(http://warrax.croco.net/Satan/About_Us/bmb.html)

Раньше я с рабостью вступал в подобный бредовый флейм, сейчас уже надоело.

Не подписываюсь, надоело...

anonymous
()
Ответ на: ДРУГОЙ ТЕСТ от anonymous

по этим тестам, вообщем как использовал gcc так и буду, а все остальное для других =)

По делу, для многих задач gcc самое то, может конечно в смысле мультиплатформенности и не "самое-то" но мультиплатформенность для меня не важна.

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

> Это на стареньком атлоне тандерберде, 1333 (sdr512Mb)

> gcc version 2.95.4 20011002 (Debian prerelease), з запущенными иксами (мозилла с десяток табов + xmms музычку играет, кучка графических аплетов в афтерстепе справа рендерит красивости) > Вот я и думаю... Почему это у товарища с gcc version 3.3.3 и iCel-1700 тест занял 64732 ms ?

1. У тебя thunderbird а у меня тормоз и кастрат целерон (что говорить если его даже iСel-1400(от p3 который) обгоняет) 2. Я запускал на офисном сервере, а ему есть чем заниматься и без этого бенчмарка (правда я renice для некоторых процессов таки сделал :)

Теперь я думаю понятно почему A1333 натягивет iCel-1700.

PS За более глубокими подробностями goto читать ixbt.com, su.hardw.pc.cpu, etc.

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