LINUX.ORG.RU

Что быстрее python или ruby?


0

0

Создал два файла:

1.py

#!/usr/bin/python
print 2**302400

и

1.rb

#!/usr/bin/ruby
print 2**302400;

Запускал таким образом:

date ; ./1.py ; date
date ; ./1.rb ; date

В результате 1.rb выполнился за 3 секунды, а 1.py выполнился за 6 секунд. Стало интересно с чем связано такая разница в скорости выполнения одной и той же операции. Тест проводил несколько раз, каждый раз один и тот же результат - 3 секунды ruby, 6 секунд python. Результат получился абсолютно одинаковый в обоих случаях (сравнивал редиректом в файлы и нахождением md5sum файлов)) не вручную же столько цифр)))).

Вобще не могу определиться что лучше использовать для 2 проектов: 1. веб парсер, работающий в несколько потоков 2. средних размеров веб приложение

Для 1 проекта собирался использовать perl исключительно из-за WWW::Mechanize, однако забросил это дело потому что язык ужасный, вместо того что бы упростить детали он их усложняет. Проще написать аналогичную библиотеку на другом нормальном языке программирования чем разобраться в этом перле.

Для 2 проекта собирался использовать PHP однако вовремя понял что проект для него слишком большой.

Ответ на: комментарий от suzuki

> А чем перл хорош для парсеров? Не, ну правда, чем? pcre?

регулярные выражения есть везде практически, и в python, и в ruby, и в php, и т.д., да проще перечислить где их нет. из них не стоит юзать такой отстой как пёрл.

На яростную критику защитников пёрла похоже отвечать бесполезно. Кстити, обратите внимание - они не комментирую конкретно недостатки которые я привёл а только произносят фразы общего характера, как например «ты не прав. ни в первом абзаце, ни во втором »

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

> А что это тогда? о_О

Считай это частью FFI. Или FDI, Foreign Data Interface.

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

>из них не стоит юзать такой отстой как пёрл.

молодой человек, хватит троллить:)

регулярные выражения есть везде практически, и в python, и в ruby, и в php

ruby и php не смотрел. А в питоне регулярные выражения нельзя сравнить перловыми - в перле это язык и пользоваться ими в 1000 раз удобней.

они не комментирую конкретно недостатки которые я привёл

ты не привёл недостатки, ты просто написал набор слов.

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

> ruby и php не смотрел. А в питоне регулярные выражения нельзя сравнить перловыми - в перле это язык и пользоваться ими в 1000 раз удобней.

бред, пусть длиннее получится но зато читабельно.

ты не привёл недостатки, ты просто написал набор слов.

купи очки

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

>бред, пусть длиннее получится но зато читабельно.

от того, что ты не знаешь перл он не становиться нечитабельным.

купи очки

т.е. твой отжиг про то, что Рендел Шварц тебя забанил за варез считать за аргемент? жги дальше:))

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

ну ты точно читать не умеешь. про $_ и массивы комментируй, а не про этого придурка который меня забанил.

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

> в питоне регулярные выражения нельзя сравнить перловыми - в перле это язык и пользоваться ими в 1000 раз удобней.

Да чего уж, в 0x1000 раз.

tailgunner ★★★★★
()

Блин, возьми java для обоих проектов и твои волосы станут мягкими и шелковистыми ;) Там и потоки нормальные и скорость выполнения. Плюс вагон и маленькая тележка библиотек нормального качества что для веба, что для обработки текста.

Nagwal ★★★★
()

>Вобще не могу определиться что лучше использовать для 2 проектов: 1. веб парсер, работающий в несколько потоков 2. средних размеров веб приложение

1) groovy+gpars
2) grails

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

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

val-amart ★★★★★
()
Ответ на: комментарий от md5xxx1

> Может кто нибудь посоветовать библиотеку для HTTP запросов на Python или Ruby

curl ;)

в питоне можно ей куки подсовывать прямо из памяти, без файлов.

val-amart ★★★★★
()

Тест который ты привёл ВООБЩЕ не имеет отношения к скорости виртуальной машины, а только СИшной библиотеки ответственной за длинную арефметику. Тем более что длинная арифметика тебе не нужна - совсем феерично. А по поводу «кто быстрее» - это тебе на debian shoot out

theos ★★★
()
Ответ на: комментарий от val-amart

> curl ;) в питоне можно ей куки подсовывать прямо из памяти, без файлов.

Подсовывать можно и в PHP а вот выделять получаемые куки из заголовков можно в память а не в файлы?

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

>Может всё-таки ответишь на мой предыдущий пост в треде? Мне правда очень интересно.

мне лень учить тебя перлу, тем более что я сам уго прилично подзабыл.

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

> мне лень учить тебя перлу, тем более что я сам уго прилично подзабыл.

lmao! Видимо, не знал, да забыл.

А пи€деть так горазд, но объяснить свои слова и точку зрения - фиг. Молодец.

suzuki
()

$ python pow.py | grep Wed
Wed Dec 30 15:49:00 2009
Wed Dec 30 15:49:04 2009
$ ruby pow.rb | grep Wed
Wed Dec 30 15:49:12 +0300 2009
Wed Dec 30 15:49:16 +0300 2009

$ cat pow.{py,rb}
#!/usr/bin/python

import time

print time.ctime()
a = 2**302400
print a
print time.ctime()
#!/usr/bin/ruby

print Time.now, «\n»;
print 2**302400, «\n»;
print Time.now, «\n»;

Мораль сей басни такова. надо более нормальные тесты юзать.

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

Ты сперва объясни что тебе не нравиться, а то какойто надор бессвязных слов.

#!/usr/bin/perl -w

sub get_color {
	my ($fruit) = @_;
	print "What is the color of $fruit: ";
	
	while (<STDIN>) {
		chomp;
		last if /^\w+$/;
	}

	return $_;
}

@fruits = ('apple','banana','lemon');

for (@fruits) {
	$color = get_color($_);
	print "Color of $_ is $color\n";
}

Вопрос - что делает программа?

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

Так на перле пишут только мудаки и имбецилы. Но, судя по этому посту ты далеко не имбецил, а просто говорящий мудак.

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

teferiincub, ну и чё я не так делаю?:

[code] par@maxlance ~/bench $ python pow.py | grep Wed Wed Dec 30 16:08:13 2009 Wed Dec 30 16:08:19 2009 par@maxlance ~/bench $ ruby pow.rb | grep Wed Wed Dec 30 16:08:31 +0300 2009 Wed Dec 30 16:08:34 +0300 2009 par@maxlance ~/bench $ cat pow.{py,rb} #!/usr/bin/python

import time

print time.ctime() a = 2**302400 print a print time.ctime() #!/usr/bin/ruby

print Time.now, «\n»; print 2**302400, «\n»; print Time.now, «\n»; par@maxlance ~/bench $ [/code]

teferiincub, у тебя скольки процессорная машина?

У меня появилось подозрение что ruby распараллеливает на 2 процессора.

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

teferiincub, ну и чё я не так делаю?:

par@maxlance ~/bench $ python pow.py | grep Wed
Wed Dec 30 16:08:13 2009
Wed Dec 30 16:08:19 2009
par@maxlance ~/bench $ ruby pow.rb | grep Wed
Wed Dec 30 16:08:31 +0300 2009
Wed Dec 30 16:08:34 +0300 2009
par@maxlance ~/bench $ cat pow.{py,rb}
#!/usr/bin/python
import time
print time.ctime()
a = 2**302400
print a
print time.ctime()
#!/usr/bin/ruby
print Time.now, "\n";
print 2**302400, "\n";
print Time.now, "\n";
par@maxlance ~/bench $

teferiincub, у тебя скольки процессорная машина?

У меня появилось подозрение что ruby распараллеливает на 2 процессора.

PS. Да что ж за хрень с форумом, не могли чтоль хотя бы PHPBB какой нить поставить раз сами не могут по нормальному сделать. Все пробелы удаляются.

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

> Так на перле пишут только мудаки и имбецилы. Но, судя по этому посту ты далеко не имбецил, а просто говорящий мудак.

Судя по вашему посту вы хам. А нормальный язык программирования не должен содержать TIMTOWTDI из которых большинство путей написания имбецилизм или мудатизм как вы выразились. Зачем тратить время на изучения конструкций языка и потом ещё тратить время на то что бы выучить которые из них не следует использовать. Это наблюдается видимо из за того что пёрл устаревший архаичный язык, в котором всё наслаивалось друг на друга годами, старые конструкции не удалялись, в результате появилась такая мешанина. Когда не было python и ruby я ещё мог понять почему люди пишут на пёрле. Но теперь пёрл просто обязан уйти в прошлое.

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

ты не поверишь, но в руби все эти «$_ », как ты сказал, в изобилии, + бонусы!)

я как раз хочу попробовать написать цикл статей в стиле BOFH о разработке на рубях ^_*

volh ★★
()

md5xxx1 - ты балбес

нашел как сравнивать, твой тест - выкинуть на помойку. Тестов скорости ruby vs. python vs. perl vs. etc вагон и маленькая тележка.

В реальной жизни основные скриптовые языки последних версий(python3, ruby1.9, ...) работают примерно с одной скоростью и, в большинстве случаев, её хватает с головой. Так что погугли на наличие необходимых тебе библиотек для языка X, а потом уже выбирай какой приятнее для души.

P.S.: я бы лично советовал ruby1.9

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

2х процессорная. правда стоит бубонная чума 32х битная вроде бы. может в ней в битности дело? что-нибудь собрано 32хбитно, что-нибудь 64х?

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

ты не поверишь, но в руби все эти «$_ », как ты сказал, в изобилии, + бонусы!)

Речь тут о другом, в ruby они не изменяются вызаемой ф-цией. Само по себе $_ не является проблемой.

irb(main):001:0> def test()
irb(main):002:1> $_ = 5
irb(main):003:1> end
=> nil
irb(main):004:0> $_ = 19
=> 19
irb(main):005:0> $_
=> 19
irb(main):006:0> test()
=> 5
irb(main):007:0> $_
=> 19
irb(main):008:0>

В пёрле после вызова test() $_ стало бы равно 5, в то время как в ruby $_ внутри test() не имеет отношения к $_ outside.

md5xxx1
() автор топика
Ответ на: md5xxx1 - ты балбес от hellra1ser

hellra1ser, если не можешь объяснить разницу в скорости такую тогда молча кури в сторонке, я без тебя знаю что тестов для сравнения производительности много, меня заинтересовала конкретно данная ситуация. Вразумительное объяснение я услышал только от const86 по поводу конвертации в decimal.

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

где в треде лисперы!? - ЛОР уже не торт :(

топикстартеру: ранняя оптимизация - зло

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

> А нормальный язык программирования не должен содержать TIMTOWTDI из которых большинство путей написания имбецилизм или мудатизм как вы выразились.

Такие конструкции есть практически в любом языке. Where is your god now?

Зачем тратить время на изучения конструкций языка и потом ещё тратить время на то что бы выучить которые из них не следует использовать

Чтоб не писать бестолковый быдлокод и не сравнивать производительность двух языков с помощью date

Когда не было python и ruby я ещё мог понять почему люди пишут на пёрле.

На перле и сейчас пишут, и почему-то перловоды не ноют про $_ и прочее. Если лично ты не смог осилить перл - энжой ёр ступидити.

Но теперь пёрл просто обязан уйти в прошлое.

Ну вот веб-кодирешек только забыли спросить.

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

выбор языка по скорости работы дурацкой конструкции расцениваю как раннию оптимизацию

бредовые аргументы про пёрл не комментирую :)

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

anonymous, в твоём посте вся философия пёрла - написать так что бы никто не понял на языке с мутными правилами, а потом показывать всем какой ты умный что смог запомнить все мутные правила пёрла и предлагать «насладиться тупостью».

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

hizel, я не знаком с внутренностями интерпретатора, поэтому не знаю какую там он оптимизацию делает. результаты получаются интересные по крайней мере. Про пёрл это не бредовые аргументы и далеко не единственные. пёрл по умолчанию может наделать такой фигни, он создавался для однострочных простеньких скриптиков, но one-liner'ы можно и на ruby писать.

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

там нет нормальных веб-фреймворков. continuation-based вроде ucw и weblocks - жалкая пародия на смоллтоковский seaside, медленные и глючные.

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

Тебя кто так писать учил? И ты ругаешь перл за свои кривые руки? и ещё man foreach

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

да, и покажи мне порядочный html-парсер. не xhtml/xml, а именно html, чтобы разруливал нестандартные ситуации и позволял делать выборки по css и xpath

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

Пытался писать на перле обработку вывода gamess/gaussian. Язык адекватен как фильтр несвязанных строк, если таскать состояние - начинается ирреальный пейсец.

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

говоря *нормальных* веб-фреймворков, я имею в виду уровня хотя-бы django/rails. эти RESTAS и обвязки вокруг hunchentoot простые наколенные поделки длясебялюбимых, т.н. микрофреймворки, даже вышеназыванные weblocks и uncommon web их сильно заруливают.

жду ссылок, да.

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

django/rails - mature фреймворки для серьезной разработки веб-приложений, для которой common lisp в его текущем срезе не подходит. так яснее?

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

Ыы.
«Mature», «серьёзная разработка приложений»
Все с тобой понятно.

Я то думал, требуются средства для решения задач, а тут оказывается нужно средство для удовлетворения анальных и оральных вау-импульсов.
Пиши дальше на жабе.

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

кстати, ты даже не попробовал оспорить, что weblocks и ucw отстой, а сразу кинул ссылку на маленький микрофреймворк для персональных нужд. хотя и weblocks, и ucw - замечательные по качеству кода проекты, просто ввиду отсутствия библиотек-«батареек» из коробки, continuation-based модели и трубыдлолиспа вообще ими пользуются только маргинальные парни за 40.

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

>кстати, ты даже не попробовал оспорить, что weblocks и ucw отстой

Я просто не вижу особо смысла спорить с идиотами.

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