LINUX.ORG.RU

PHP vs RoR vs Django


0

0

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

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

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

★★

Проверено: Shaman007 ()
Ответ на: комментарий от annonymous

> Я буду утверждать, что понятие "приятно" субъективно, и для каждого программиста имеет очень разное наполнение...

Скажите прямо: Вам _приятно_ программировать на PHP? O_o

Если да, то прекращаю нафиг метать бисер перед фанатами недоязыков и иду спать.

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

>>Согласен. Тестировали apache против lightpd, что абсолютно некорректно. >>Смотрим http://www.lighttpd.net/benchmark/ и читаем вывод: >>lighttpd + fastcgi более чем на 25% шустрее чем apache + mod_php4. >>Для статики lighttpd быстрее apache в 4-6 раз. >>Смело добавьте эти 25% к результатам php-фрэймворка. Кстати, я не знаю, какого качества этот фрэймворк, я с ним не сталкивался

неправы вы. лайти действительно быстрее много апача, но... исключительно в статике. мод_пхп крутится в пространстве сервера и соотв. сам по себе много быстрее, чем вызов того же пхп через фастцги. плюс у пхп стоит акселератор, который делает насколько мне известно нативный код для процессора. а теперь возьмем РоР: руби чистый интерпертатор (вообще имхо это даже большой плюс), во вторых с лайти он работает в фастцги, в третьих через вызов 403 ошибки и всякий запрос интерпертирует. и вобще имхо убого меряться только какими то эфемерными скоростями на разных условиях. в конце концов можно поставить кучу спаун-серверов разбросанных в кластер с балансировкой и простого интерпретатора хватит на все шо хошь, а вот скорость разработки и поддержки уже иная. для того чтобы что то говорить про РоР надо попробовать хотя бы Руби. удобство и экспрессивность языка просто очевидны. а фреймворк вообще откровение

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

> Скажите прямо: Вам _приятно_ программировать на PHP? O_o

Очень хорошее замечание :). Кстати, те кому нравится пхп, либо еще очень мало написали на нем, либо просто мало пишут и им этого хватает. Мне он надоел давно и где-то года два назад я попробовал питон. Но тогда еще не было джанго и возможности его задействовать на практике тоже не было.

Полгода назад я начал изучать Руби и рельсы. Отличнейшая вещь руби. Сначала конечно было непривычно, но когда я вкурил, то сейчас использую его с большой охотой. Кстати, хочу заметить, что рельсы хороши не потому что в них много всякого жира, а как раз тем что в них используется Руби. За счет очень мощных средств метапрограммирования эти самы рельсы можно выгнуть в любую нужную сторону и добавить прозрачно все необходимые вещи.

Таких возможностей в пхп просто нет...

ЗЫ: насчет холивора питон вс руби кину своих пять коп. Руби мне понравился больше, из-за блоков и целого набора мощных методов, которые их используют. В питоне все-таки лямбда недоделанная.

Второй момент, это хвостовые if, else, while - фича взятая из перла. Просто забойная штука! Нету в удаффе :( (ЗЫ: видел уебищнейшую реализацию классического тернарного оператора ? : в змее... Это просто песдес...)

Третий момент. Оператор case. Тоже обалденнейшая вещь.

Четвертый момент. Имена методов используют в конце знаки ! и ?. Аффтор бохъ! СКолько раз на пыхе приходилось писать всякое говно типа: is_hue_mae, или так еще какую лабудень(касается и питона :)). В руби это просто: hue_mae? . А знак восклицания дает возможность сделать два разных метода: первый (без него) возвращает новые обыъект, а второй проводит действие непосредственно над самим объектом.

Можно еще много чего перечислять :), но это все дало мне повод полюбить и использовать Руби больше чем Питон.

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

>На этом фоне php показался просто супер >скоростным ;) Так что меряйте скорость на чём-то реальном, и не верьте >синтетическим бенчмаркам.

ты чо упал шоль?? в реальности cgi нигде не используется.. используют fast-cgi и mod_*. Тогда подключение библиотек не вызовет падение скорости, т.к. они будут подключаться только при первом запуске скрипта, а потом, упрощенно говоря скрипт будет находиться в памяти...

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

> ты чо упал шоль?? в реальности cgi нигде не используется..

Правда? А мужики-то и не знают (c) ;)

А "нигде" - это где? ;) Я много лет работаю исключительно с CGI!
И на mod_blabla совершенно не тянет... И клиенты почему-то не
замечают... А если замечают, то исключительно стабильность работы
и полное отсутствие проблем.

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

> Я много лет работаю исключительно с CGI!

Этим всё сказано. Мужики, не тратьте время на этого чудачка.

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

> Скажите прямо: Вам _приятно_ программировать на PHP?

Нет, не приятно. Но альтернатив нет, если рассматривать _все_ "за" и "против". На perl, к примеру, мне программировать ещё более не приятно.
А если честно, то противно.

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

> Мужики, не тратьте время на этого чудачка.

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

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

А на чём приятно? Может, программирование вообще не твоё призвание, дуралей?

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

>но я, в отличие от других чудаков даю ссылки на бенчмарки

Да ипона мать, мужики. Всё новость про эти бенчмарки. Чего тебе ещё надо, а?

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

> неправы вы. лайти действительно быстрее много апача, но... исключительно в статике.

Для писателей, не умеющих читать ещё раз ссылка:
http://www.lighttpd.net/benchmark/

25 (двадцать пять) процентов выигрыш в динамике.

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

> Всё новость про эти бенчмарки. Чего тебе ещё надо, а?

Чтоб ты сходил перекурил. Не напрягайся так, а то тебя надолго не хватит. Есть бенчмарки, есть пузомерки. Первый признак пузомерки -
отсутствие исходников. Я могу проверить результаты? Нет. И ты не можешь.
О каких тогда бенчмарках ты мне рассказываешь?

annonymous ★★
()

Основная фишка ПХП - возможность смешивать код и контент в одном файле. Это хорошо для детского хомяка, но для серьёзных вещей это ЗЛО. Поэтому даже современные фреймворки на ПХП используют шаблоны типа Smarty. То есть основная фича ПХП нафик никому не нужна. ТАК НАХУА ОН ВООБЩЕ ТОГДА СДАЛСЯ ЭТОТ БЫДЛОЯЗЫЧОК? Если есть питон, руби, лисп, да хотя бы кривенькая жабка.

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

> Кстати, те кому нравится пхп, либо еще очень мало написали на нем, либо просто мало пишут и им этого хватает.

На php уже всё написано. Задача состоит в правильной манипуляции готовым
кодом. Те, кто пишут с нуля очередной блог на новом мегакрутом языке
просто очень мало пишут и ещё меньше продают свои работы. Успехов в
вашей нелёгкой работе.

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

Иди уже спать, а то глаза будут красные.

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

> Основная фишка ПХП - возможность смешивать код и контент в одном файле.

Неправда. Такие фишки возможны в любом языке. Более того, наличие
встроенной такой фишки - это плюс языка. Ты можешь её никогда не
использовать, а однажды пригодится.

> Это хорошо для детского хомяка

Это хорошо для создания лёгкого шаблона, это хорошо для быстрого
прототипирования, и таки да - для простого приложения по типу
запрос/ответ. А почему бы и нет?

> То есть основная фича ПХП нафик никому не нужна. ТАК НАХУА ОН ВООБЩЕ ТОГДА СДАЛСЯ ЭТОТ БЫДЛОЯЗЫЧОК?

О, спасибо. Улыбнуло ;) Учись, парниша, твои доводы сейчас покажутся
смешными, но когда ты подрастёшь тебя за такое пинать начнут. Причём
твоя глупость не относится конкретно к php, она является проявлением
банального невежества в области проограммирования вообще.

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

> А "нигде" - это где? ;) Я много лет работаю исключительно с CGI! И на mod_blabla совершенно не тянет...

Вот те на... А по моим наблюдениям тот же php почти никто не использует как CGI. Везде mod_php.

> И клиенты почему-то не замечают...

Это только если нагрузка на сервер небольшая. И то, при большом объёме кода тормоза CGI могут проявиться даже при низкой нагрузке.

> Тестировал ruby. Тест "Hello, world!" показал неплохие результаты - вдвое быстрее php5! Я уж было обрадовался. Но, первое же подключение файла стандартной библиотеки (require 'date') снизило скорость исполнения скрипта втрое!!! А подключение второго файла (require 'cgi') снизило скорость ещё вдвое! На этом фоне php показался просто супер скоростным ;)

А может всё таки надо тестировать не скорость загрузки модулей, а скорость работы приложения? ;) Хотя понятно, что для CGI как раз таки первый параметр более важен :)

И вообще, чем вам не нравится Fast CGI? Изоляция процессов - как в CGI, при этом накладных расходов fork - exec нет. Плюс возможность физически разделить веб-сервер и сервер приложений. Не вижу ни одной причины использовать CGI там, где можно задействовать Fast CGI.

Hjorn
()
Ответ на: комментарий от n-tony

> А то, что реальные веб-приложения тратят основное время на работу с БД - это если мы про пых пых бебе говорим или про хомяк васи пупкина, то это да. А если про что-то более иное, то это далеко не всегда истина.

Например? Лично мне без разницы, как это называется. Чтоб ты успокоился,
я могу честно признаться, что обслуживаю несколько хомяков имени Васи
Пупкина, каждый с ежемесячным доходом больше $10000. Это базы данных.
И (о, ужас!) они работают в режиме CGI ;-)

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

> О, спасибо. Улыбнуло ;) Учись, парниша, твои доводы сейчас покажутся смешными, но когда ты подрастёшь тебя за такое пинать начнут. Причём твоя глупость не относится конкретно к php, она является проявлением банального невежества в области проограммирования вообще.

Спасибо, поржал. Завтра коллегам расскажу. :)))))

А вы прежде чем защищать БЫДЛОЯЗЫЧОК, лучше бы асилили MVC.

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

>Чтоб ты успокоился, я могу честно признаться, что обслуживаю несколько хомяков имени Васи Пупкина, каждый с ежемесячным доходом больше $10000.

Спасибо, подрочил.

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

> (о, ужас!) они работают в режиме CGI

И действительно, ужос.

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

Никогда не спорьте с дураками. Со стороны разницу между вами могут не заметить.

P.S. И не пытайтесь их убедить. Им не реальная работа нужна, а выделиться и почувствовать крутизну. Сейчас RoR и Python становятся модными на web, они переходят на них. Завтра они станут обычными и наша крутая элита перейдёт на BrainFuck, дружно объявляя быдлоязыками Ruby и Python. О чём можно говорить с человеком, который так радуется возможности сэкономить 1 символ, заменив "Is" на "?"? ;-) Он что, действительно столько печетает, что это становится значимым?

Невольно вспоминается классика физики (переклад): он утром печатает, днём печатает, вечером печатает, ночью печатает... Когда же он думает?

Наверное эта функция ещё не реализована. А зачем? Всё на рельсах...

Python, впрочем, уже объявляют. Разумеется, не тогда, когда он что-то показывает в бенчмарках. :)

Что касается Ruby, то теперь я точно верю, что его придумали японцы. По понятной причине, ни один человек, для котороя является английский родным, не станет добавлять в идентификаторы "?" и "!".

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

> Что касается Ruby, то теперь я точно верю, что его придумали японцы. По понятной причине, ни один человек, для котороя является английский родным, не станет добавлять в идентификаторы "?" и "!".

В точку. Рубийные конструкции, типа 10.each do {|i| blabla(i)} и в самом деле напоминают порядок слов в японском языке. А Питон пытается походить на английский язык (for i in foo: bar(i)).

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

На счет все написано...

Если на PHP нечто уровня dev-python/matplotlib ?..

Я ооочень долго искал нечто подобное. И только сейчас понял, что нашел.

Все остальное даже близко не дотягивает. На PHP же такого совсем нет.

Без относительно скорости и прочих вещей. PHP подкупает своим синтаксисом! У него очень низкий барьер начала программирования. Он позволяет встраивать код программы в другие файлы. будь то html или что-то другое. Для скриптового яызыка я бы назвал это гениальным решением!

Дальше начинаются проблемы. Во первых глобальные переменные! Как ни странно, но разработчики спутали, а пользователи очень в этом помогли когда стали кричать о вредности таких переменных.

Следует разделять те переменные которые приходят через соединение и те, которые находятся в тексте программы!!! Нормально как на С на PHP можно писать только с доступными глобальными переменными! Но это непонятно с какой радости делает все переменные доступные программе, даже те, которые пришли от клиента. Это ненормально! Но точно так же ненормально запретить глобальные переменные вообще. Или точнее вообще вводить такой термин! С позволяет без труда писать подобный текст:

int pi=3.14, e=2.71, c=3e8;

void f(x) { return pi*pi/e*x/c; // смысла в форумуле нет, не ищите. }

Чтобы так сказать безопасно сделать тоже самое на PHP c учетом боязни глобальных переменных получаем.

function f(x) { global pi, e, c; ... }

Иначе говоря нарушается простое правило видимости переменных, которое было придумано еще в С и прекрасно работало везде!

Вы меня простите, но меня раздражает записывать глобальные переменные в функции размер которой меньше чем эта запись... И все ради какой-то безопасности, нарушение которой является лишь следствием кривой концепции области видимости!

В питоне меня так же раздражают отчасти невозможность! описания переменных, а так же их типов.

Иначе говоря я согласено с концепцией, что программист может опустить данные сведения, положившись на интерпретатор.

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

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

Нечто подобное как раз реализовано в Boo.

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

На сегодня все. Привет.

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

> В питоне меня так же раздражают отчасти невозможность! описания переменных, а так же их типов.

Это кажется страшным, когда слезаешь с C, но на деле это не так уж плохо. Хотя иногда строгая типизация бывает полезна. Питоновцы над этим думают, было несколько PEPов на эту тему. Когда-нибудь прикрутят, наверно.

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

> 10.each do {|i| blabla(i)} и в самом деле напоминают порядок слов в японском языке.

OMG. Порядок слов в иппонском языке. You made my day.

А это не китайский, часом?

| a | a := 0. 1 to: 10 do: [ :x | a _ a + x ]. ^ a.

anonymous
()

КОгда я не хочу взрывать свой моск, я использую c/c++
когда я хочу отпарсить много текста, я использую перл.
Когда я захочу взорвать свой моск, я не буду использовать руби, питон или пхп. Я сразу использую brainfuck (mod_brainfuck существует)

PS. Бля вырубите нахуй этот код проверки! Из консоли писать невозможно!

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

> Если на PHP нечто уровня dev-python/matplotlib ?..

Что есть dev-python, уточняем, google не помогает, а вселенная несколько шире привычных вам представлений... IDE?

> PHP подкупает своим синтаксисом! У него очень низкий барьер начала программирования.

Это во многом не так. Синтаксис php похож на сишный, соответственно и барьер такой же. И для хорошо знающих си, он кажется простым. По этому гипотетический Вася Пупкин - не знает. Он и яваскрипт-то для своей странички не сам писал, а таскас с сайтов "100 скриптов для супер веб-мастера". Откуда ему знать си?

Далеко он уедет не зная различий между "==" и "==="? Я уже не говорю про сложения строк.

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

Можно поинтересоваться, каким годом датируются ваши знания о php? Пресловутый register_globals уже сколько лет, как отключен по умолчанию, а скоро вообще исчезнет.

> Или точнее вообще вводить такой термин!

А подумать, перед тем, как писать? В php переменная создаётся при обращении. Как транслятору различать, с какой переменной хотят иметь дело? Запрещать локальные переменные, чьё имя совпадает с одной из глобальных? Убирать global и вводить var? ;-) А как же все крики "оптимизаторов"? Локальных переменных, как правило больше... ;-)

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

Вас не раздражает писать var? ;-)

Вас не раздражает писать функции, которые зависят от тонны глобальных переменных? (Может ООП попробовать? Инкапсуляция, говорят, рулит. Правда, от this-> удавишся... ;-) )

Вас не раздражает писать функции, где кода меньше, чем переменных?

И т.д.

> На сегодня все. Привет.

Привет.

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

> Тесты (реальные) говорят об обратном. Разница в производительности между
> apache+mod_xxx и лёгкий вебсервер (типа lighttpd, mathopd) + CGI на
> приложениях, обращающихся к БД минимальна. Большую часть времени
> приложение проводит в общении с базой данных.
если действительно нужна производительность то подходы совсем другие

> - Ограничения по памяти на миниустройствах. mod_xxx отжирает её слишком много.
mod_xxx куда экономней по ФИЗИЧЕСКОЙ памяти, как минимум благодаря CoW

> Безопасность исполнения на хостинге в условиях множества
> пользователей. CGI скрипты легко запускать под разными uid.
fastcgi тоже так может, и вообще какое отношение миниустройства и хостинг имееют к требованию производительность ?

> Ответ неправильный. На самом деле это fork+exec.
не надо передергивать, спецального форка для запуска CGI в некоторых простых web серверах может и не быть

> Нужна максимальная производительность в режиме _CGI_. Что не понятно
в этой фразе?
то что выбранны противоречивые критерии и на основании этого делаются глобальные выводы

ed ★★
()

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

gigabitto
()

Пара вопросов знающим Ruby:

1) Трудно ли обвязку сделать для C-шной библиотеки? 2) Можно ли на платформе Win32 использовать из Ruby COM-компоненты?

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

Ответил сам на свои вопросы:

> 1) Трудно ли обвязку сделать для C-шной библиотеки?

легко

> 2) Можно ли на платформе Win32 использовать из Ruby COM-компоненты?

win32ole

Vond ★★
()

А есть ли статистика по реальному распространению php, perl, asp, java и остальных в вебе?

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

> Что касается Ruby, то теперь я точно верю, что его придумали японцы. По понятной причине, ни один человек, для котороя является английский родным, не станет добавлять в идентификаторы "?" и "!".

Та при чём тут японцы Matz нагло позаимствовал эти соглашиния из лиспа. Да и вообще много чего от туда позаимствовал...

CrazyPit ★★★
()

Дети! Чем больше у вас всех этих RoR, perl, PHP и т.д., тем быстрее вас побьёт M$ со своим ASP.NET. Потому что у них всё ясно, чётко и однозначно, а у вас - балаган и пустая болтовня, которая обычного кодера только злит.

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

Главное чтобы РоР не купили. :) Хотя если не купят то х з что с ними станет :))

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

сам сначала не врубился в красоту итераторов. плевалася и мучил питон (кстати почему разговоры только про джанго? а где его мощный стартап зоп? почему молчим про место зопа?). но даже дело не не столько в их использовании сколько в написании и мышлении итераторами. категорически сокращает код и увеличивает его понятность. а повальная объектность тоже прорубает не сразу. но когда прорубает то это дзен.

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

Хм.. ну видел я асп.нет. По синтаксису скорее походит на что-то типа [сдерживаясь] всеми нами любимого и безмерно уважаемого Basic'a. Или питона, не знаю. А то, что побъет... Может я покажусь паникером, но таки да, побъет. Собственно, ужо. По крайней мере в крупных конторах. Патамуша реклама. Ну и, как всегда, почерк негрософтовский - куча всяких модных фич вроде динамической графики или-как-там-ее-зовут. Другой вопрос, как это все работает.. :)

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

> АСП.НЕТ - клон быдлопхп.

Всё правильно. Очень простой язык, на котором можно быстро и грязно много что сляпать. Как бейсик. Потому его так и полюбляет масса. А M$ нужна именно масса. Так что выбора, в принципе, и не было. Всё логично.

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

p.s. и кому это все нужно - тоже вопрос. На каждый день я имею ввиду.

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

> Та при чём тут японцы Matz нагло позаимствовал эти соглашиния из лиспа. Да и вообще много чего от туда позаимствовал...

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

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

s/быдлонечно/УБОГОНЬКОЕ БЫДЛОНЕЧТО/

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

Скорее качественный удобный спальный мешок. Швейцарский нож. Мне с ним удобно. А вообще полезно оказалось влияние японца. Очевидно что в европе ничего нового после алгола придумать так и не могут.

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

> получился не лисп, не смолток, а быдлонечно

Не всё так страшно. Быдлонечто было до 1.8-1.9. И к версии 2.0 много радикальных изменений готовится.

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

> влияние японца

Японец сп-дил (ладно, собрал в одном месте) идеи из упомянутых выше языков, причём сделал это местами криво. А уж его идиосинкразия к юникоду вообще притча во языцех. Если бы не европейцы, ruby так быдлоязыком и остался бы. Для ускоглазых пикачу.

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

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

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

> где конкретно криво?

Для начала можно и самокритику Matz'a почитать (How Ruby Sucks). http://www.rubyist.net/~matz/slides/rc2003/

Причём тут Алгол, я вообще не понял. Японское поделие вытащили на свет божий. И "Руби кривой и медленный" не "_потому_что_интерпретатор", а потому что sucks. Вот 2.0 выйдет (если), тогда и посмотрим.

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