LINUX.ORG.RU

PHP vs RoR vs Django


0

0

Опубликованы результаты сравнительных испытаний производительности трёх различных веб-фреймворков: Symphony(PHP), Ruby on Rails и Django(Python).

Вкратце: Rails оказался гораздо быстрее, чем Symphony, а Django - гораздо быстрее, чем Rails.

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

★★

Проверено: Shaman007 ()

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

Не надо, $result[]= и все. По хорошему, неплохо было бы перед foreach объявить $result = array();

Если нужно что бы именно возвращало, то return после foreach.

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

окуеть.Насколько я понял надо было написать в стиле уних-вей ls|sort|more что на руби и показали.Я вобше его не знаю и то все понятно.А вы какую-то фигнюшку на пыхпых накатали и радуетесь.

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

> Да, суки! ПХП самый лучший язык всех времен и народов!

Ну все, теперь без ржача тред читать невозможно!

Хорошо у меня отпуск начался :)

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

>Покажи нам веб фреймворк на форте

Ты опять что-то за меня домысливаешь, да?

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

> Если нужно что бы именно возвращало, то return после foreach.

Погоди, так она возвращает или не возвращает?

Конечно, можно массив сразу засунуть в массив, не спорю. Можно и поэлементно. В конце концов, повторюсь, задача "записать в одну строчку вывод квадратов элементов массива, если квадрат больще 10" - прямо скажем, не жизненная.

А на олимпиаду по программированию на PHP я не записывался ;)

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

>Тебе ж сказали, PHP сначала был простеньким препроцессором. Потом из него зачем-то попытались сделать мегаязык. Обосрались.

"Обосрались" - это завоевали основную часть хостингов разного калибра? Вот когда хостинги python + ror вместе взятые будут составлять хотя бы треть от того, что сейчас занимает php - тогда можно будет поговорить.

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

>Хмм..ну, в руках умелых программистов и VB умеет масштабироваться:). Другой вопрос, ценой каких усилий...

Можно пару примеров на проекты уровня Википедии на других языках?

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

>Скорей прошло всего 48 лет с изобретия лиспа;)

Ну, с Лиспом мы соревноваться не будем... :D

А так - речь просто о том, что в идентификаторах Форта допустимы любые непробельные символы. На сколько я знаю, Лисп такого не умеет :)

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

> Можно пару примеров на проекты уровня Википедии на других языках?

trac - система управления проектами. Питон.

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

>И за всё это время PHP так и не вырос из своих детских штанишек.

Есть крутые взрослые языки. Для настоящих пацанов.

И есть языки в детских штанишках... которые завоевали Web.

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

Прошерстил справку по PHP. Нет там ни слова про специальную переменную $result. Значит, анонимус был не прав, и отправляется в реактор.

Или он сможет доказать, что выражение $result[$i]=$var[$i]*$var[$i]; не будет работать?

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

>Ну и ещё (в меньшей степени) огорчает отсутствие анонимных функций

create_function?

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

> Значит, анонимус был не прав, и отправляется в реактор.

Туда ему и дорога, амен.

Мне кажется что тебя выбрали негласным лидеров пэхапистов Лора. Я пошью знамя, ты будешь его нести, а все остальные будут идти в ногу и запевать: "В топку руби и питон, кто не с нами тот гандонъ"!

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

о секретный союз меча и орала?Ваше кредо?

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

>Я, уважаемый, работник

работник - тот кто работать охотник. все на свете сделано им. подрастешь - будь таким (ц)

>А ты можешь теоретизировать, на чем мне деньги зарабатывать.

а мне пох. совершенно. тут обсуждают недоязык пхп а не то где деньги водятся.

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

>Поставим перед собою цель, переписать lor на PHP =)

Хотя, наверняка где-нибудь на сорсфордже уже валяется php-шный флеймогенерирующий скриптик ;-)

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

То что у них понаписано ничего не возвращает, в смысле результат то оно возращает (может даже и не возвращает только проводит операции над массивом и все), но это результат, а не return как из функции. Хотя return тоже результат возвращает, наверное, ну в общем понятно. :D

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

>Заточка PHP под веб заключается лишь в том, что код на PHP можно встраивать непосредственно в страницу. Это киллер-фича для мелких хомяков, но в больших проектах необходимо отделять код от контента.

И тут нам на помощь приходит... Smarty. Которые на этой "киллерфиче" неявно для программиста работает. Из шаблонов и данных он генерирует временные (сохраняемые) .php-файлы. Которые, соответственно, очень быстро исполняются, генерируя динамику.

Есть такие аналоги в RoR или Python? Наличие таких решений могло бы помочь перейти на них :)

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

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

То есть сферических коней в вакууме? Ну, обсуждайте. Тогда могу перейти на сторону Parser. Решение то задачи с квадратами на нем получлось еще короче, чем на Ruby. Parser рулит, ага?

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

> Я пошью знамя, ты будешь его нести, а все остальные будут идти в ногу и запевать: "В топку руби и питон, кто не с нами тот гандонъ"!

Пошей. Только куда ты его понесёшь? Это питоновцы и рубинщики ходят такими толпами и с такими лозунгами. Пхпшники отностятся к ним индифферентно.

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

Обещаешь в ближайшее время ( ну, где-нибудь в пределах ближайших 10-15 страниц ) телефончик твоего драгдилера? :)

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

>Как правило, один толковый чувак на рельсах заменяет пару-тройку пыхпых-быдлокодеров.

Точно также один толковый чувак на PHP заменит пару-тройку быдлокодеров на рельсах :)

Тебе не кажется, что в твоём сравнении ключевые слова не "рельсы" и "пыхпых", а "толковый" и "быдло"?

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

Дык, для $result[$i] нужно будет ещё $i=0, а потом ещё $i++ делать, не кузяво. Можно конечно вместо $result[]= сделать: foreach(array(10, 20, 30) as $key=>$item) {$item*=$item;($item>10)?$result[$key]=$item:'';};

Но если массив будет большой, и половину выкинет, то у $result будет весьма интересная последовательность ключиков.

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

> И тут нам на помощь приходит..

Я человека уже послал на яндекс. Чую, он еще не вернулся.

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

> Дык, для $result[$i] нужно будет ещё $i=0

Дык я что, спорю, что ли. Я же не писал, что это максимально эффективное решение.

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

> Туда ему и дорога, амен.

Братья пехаписты. Простите меня! Я расскаялся и никогда больше не буду писать ни строчки кода на перле и питоне. Я понял что джанго гавно, а Zend-framework наше все. Я вышел сегодня в интернет и увидел много людей, их глаза горели спокойным красным цветом и они звали меня: "Вернись, Кондратий, вернись". И я вспонмил счастливые дни под оффтопиком, когда беззаботно запускал зенд-студию и под нехитрый напев групы "Стрелки" писал чудный код на моем любимом пхп.

Я даже предлагаю сделать новый сайт, в отместку ЛОРу- windows.org.ru - или ВОР. И собрать там все пэашпэ-кодеров и писать там интересные новости про любимый язык и опускать там перл яву и питон и руби иже с ними.

А по выходным мы будем забивать стрелку и ехать пить пиво и бить железнодорожников с жонглерами, потому что их меньше, а за нами сила!

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

> Но если массив будет большой, и половину выкинет, то у $result будет весьма интересная последовательность ключиков.

Придётся в array_values заворачивать. Не, лучше как есть оставить. :)

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

> Про PHP - заменить print на $result.= .

1. Не в твоём коде:)

2. $result[].

3. В конце этот $result должен быть ещё возврщаён.

т.е. в руби,питоне,хаскеле можно написать

a = <та строчка>

А в пых пых нет.

> Про C - то же.

Не мечатай (хинт размер изначального списка не задан).

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

>Притом решение на руби хорошо тем, что по структуре напоминает просто перечисление действий

Прости, ты это сообщение читаешь по слогам? Или даже по буквам?

Нормальные люди читают любую информацию токенами (чанками) - законченными усвоенными смысловыми блоками, наглядно разделёнными друг от друга.

Запись вида

[1,3,5,6,20].map {|v| v*v}.select {|v| v > 10}.each {|v| puts v}

синтаксически неразделима. Более того, в нашем восприятии, когда разделитель - пробел, она будет разбита на чанки:
[1,3,5,6,20].map
{|v|
v*v}.select
{|v|
v
>
10}.each
{|v|
puts
v}

Ты способен вопринять это? Нормальный человек - нет :)

Поэтому в RoR придётся текст такого вида читать "посимвольно". Как ты пишешь "перечислением действий". Это аналогчно чтению по буквам. Восприятие такой информации осуществляется на порядок-два медленнее, чем раздельной.

Впрочем, когда дети читают по буквам, то им удобнее, когда буквы побольше, а слова - покороче ;)

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

> Ты способен вопринять это? Нормальный человек - нет :)

> Поэтому в RoR придётся текст такого вида читать "посимвольно". Как ты пишешь "перечислением действий".

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

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

> И тут нам на помощь приходит... Smarty. Которые на этой "киллерфиче" неявно для программиста работает. Из шаблонов и данных он генерирует временные (сохраняемые) .php-файлы. Которые, соответственно, очень быстро исполняются, генерируя динамику.

Страсть как красиво! PHP не асилил метапрограммирование и выдумывал очередной костылик. Прям как moc из Qt.

> Есть такие аналоги в RoR или Python?

Ну ты даёшь! В RoR, а особенно, в Django есть _прекрасные_ шаблоны. Которые компилируются один-единственный раз с помощью кода из десяти строчек, а потом хранятся в памяти и очень быстро исполняются, когда надо. Feel the power of META, брат.

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

> [1,3,5,6,20].map {|v| v*v}.select {|v| v > 10}.each {|v| puts v} - это прямой аналог знаменитого ls|sort|less.

Второе - это три чётких токена. Более того, у 99% linux-пользовтелей - один токен (ибо используется часто).

Вышеприведённый код на RoR - даже для опытного RoR - программиста едва ли не под десяток токенов. К тому же весьма нечётко отделённых.

Примеры:

ls|sort|more

[1,3,5,6,20].map {|v| v+v}.select {|v| v > 10}.each {|v| puts v}

Где (и насколько) быстрее ты найдёшь разницу с тем, что ты приводил выше?

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

> > Про C - то же. Не мечатай (хинт размер изначального списка не задан).

Ну про C - это пусть сишники делают.

> А в пых пых нет.

Это доказательство убогости PHP, я так понимаю? Убогий, сирый и страшный. Жалко, под него так много написали, и так много хостинга, прямо... не знают люди, что творят.

Примеры готовых систем на Ruby/Python будут? Это доказательство убогости этих языков.

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

> Мне кажется что тебя выбрали негласным лидеров пэхапистов Лора. Я пошью знамя, ты будешь его нести, а все остальные будут идти в ногу и запевать: "В топку руби и питон, кто не с нами тот гандонъ"!

Ффффортунки!!! Чуть не помер нафиг! :)))))

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

> create_function, а также array_walk, array_map

Кстати да, только я боюсь что ПХПшники примут эти функции как великое откровение:) А в самом деле извратно он в ПХП сделаны:/

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

> В конце этот $result должен быть ещё возврщаён. Где там в том коде возвращается результат (ну там где map sort и т.д.)? И тут ничего возвращать не надо, будет $result и все.

> т.е. в руби,питоне,хаскеле можно написать a = <та строчка> А в пых пых нет.

А по подробнее? Не совсем понятно.

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

> $res=array(); foreach(array(1,3,5,6,20) as $v){$v*=$v; if($v > 10){$res[]=$v;}}

Молодец, тольку в руби и питоне  нужно было удалить лишнее а в пхп 
добавить:)) А вообще это конечно тупое сравнение. Лучше покажите мне на 
ПХП что-то такое:

  class Project < ActiveRecord::Base
    belongs_to              :portfolio
    has_one                 :project_manager
    has_many                :milestones
    has_and_belongs_to_many :categories
  end

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

> Точно также один толковый чувак на PHP заменит пару-тройку быдлокодеров на рельсах :) Тебе не кажется, что в твоём сравнении ключевые слова не "рельсы" и "пыхпых", а "толковый" и "быдло"?

Не заменит. ПХП требует больше строк кода и больше времени, чем Ruby/Python для решения эквивалентных задач. Толковый хакер сам смекнёт, что к чему, и выберет более эффективный путь. А быдло будет высунув язык колотить по клавиатуре. Наверно потому, что им платят за строки кода, а не за результат.

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

> И тут нам на помощь приходит... Smarty. Которые на этой "киллерфиче" неявно для программиста работает. Из шаблонов и данных он генерирует временные (сохраняемые) .php-файлы. Которые, соответственно, очень быстро исполняются, генерируя динамику.

> Есть такие аналоги в RoR или Python? Наличие таких решений могло бы помочь перейти на них :)

cheetah поинтересней твоего Smarty будет

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

>Теперь более реальная задача - этот код должен возвращать список а не печатать

Чем дальше, тем больше синтаксического шума. Эргнономика работы с таким кодом - околонулевая. Разбираться с ним год спустя - застрелишься.

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

>То есть сферических коней в вакууме?

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

>Parser рулит, ага?

SGMLParser? конечн

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

> Это доказательство убогости PHP, я так понимаю? Убогий, сирый и страшный. Жалко, под него так много написали, и так много хостинга, прямо... не знают люди, что творят.

> Примеры готовых систем на Ruby/Python будут? Это доказательство убогости этих языков.

Поищи по терминам zope/plone

ЗЫ. тут узнал, что на оутсорсинге труду php-шника оплачивается в районе 10-15$ в час, а zope/plone - в районе 50-70$

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

> Молодец, тольку в руби и питоне нужно было удалить лишнее а в пхп добавить:))

Ну, вывод на экран я *удалил*. :-P А насчёт добавить, я так понимаю и в Ruby и в Python как-то придётся указать *куда* помещать результат. Или интересует класс задач, сбрасывающий данные в /dev/null? ;-)

> Лучше покажите мне на ПХП что-то такое

Я ведь предупреждал: "Учтите, за продолжение мастер-класса я намерен брать деньги." ;-)

(C) http://www.linux.org.ru/jump-message.jsp?msgid=1492835#1496347

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

>И тут нам на помощь приходит... Smarty. Которые на этой "киллерфиче" неявно для программиста работает. Из шаблонов и данных он генерирует временные (сохраняемые) .php-файлы. Которые, соответственно, очень быстро исполняются, генерируя динамику.
>Есть такие аналоги в RoR или Python? Наличие таких решений могло бы помочь перейти на них :)

http://www.cheetahtemplate.org/

там смарти и рядом не валялся

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