Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2006-06-22

питон (Python) против пхп (PHP5). Скорость

Последнее время часто стали попадаться известия с упоминанием Ruby on Rails. Причем после описания, как клево делать вебприложения на рубирельсах, идет упоминание о том, что питон мол побыстрее будет...
Ну и решил я посмотреть, кто быстрей. Правда до руби пока ручки не добрались, поэтому сравнивал питон и пхп. Хочу еще и яваскрипт (JavaScript) проверить, в его микрософтовой реализации. Тем более, что мне самому питон нравится, не в последнюю очередь реализацией интерфейса к технологии COM/DCOM.
Сразу скажу итог: питон от 2 (двух) до 3 (трех) раз медленнее чем пхп. А если руби медленнее чем питон... Кто вообще придумал писать вебприложения на руби? Наверное продавцы суперкомпьютеров и прочих кластеров, не иначе.
А теперь приведу код, чтобы вы и сами могли проверить.

Вариант 1. просто прогон вложенного цикла.

пхп, результат:
Thu, 22 Jun 2006 01:55:07 +0400 start count
x = [8997000]
Thu, 22 Jun 2006 01:55:10 +0400 end count
итого - 3 секунды.

питон, результат:
2006-06-22 01:58:52 start count
x: [8997000]
2006-06-22 01:58:57 end count
итого - 5 секунд.

нормально, да?

Вариант 2. Перебор ячеек выборки из таблицы.

пхп, результат:
Thu, 22 Jun 2006 02:02:13 +0400start sql qry
Thu, 22 Jun 2006 02:02:13 +0400end sql qry, start count
Thu, 22 Jun 2006 02:02:19 +0400end count
not null vals: [24480]
итого - 6 секунд.

питон, результат:
2006-06-22 02:05:19 start sql qry
2006-06-22 02:05:20 end sql qry, start count
2006-06-22 02:05:44 end count
not null vals: 24480
итого - 25 секунд.

вот так. ПХП рулит.

Приложение.

Код на пхп:


Код на питон:

5 комментариев:

  1. А теперь замените range на xrange и попробуйте ещё раз. Будете удивлены

    ОтветитьУдалить
  2. Да, замена range на xrange позволяет ускорить выполнение цикла. А как быть со вторым тестом? Где ячейки таблицы перебираются? Хотя дело не в этом. Тут не обсуждение методов оптимизации/ускорения, тут я сам себе ответил на вопрос "а в принципе, какой скрипт будет быстрее? Питоновский или пхп-шный?". Ежу понятно, что пхп-шный. Опять же, ежу понятно, что есть методы оптимизации, позволяющие получить прямо противоположные результаты. А в контексте веб-приложений видно, из мировых трендов, что приложения пишут на том, что позволяет сократить время разработки. А быстродействие повышают путем кэширования и параллелизации.

    ОтветитьУдалить
  3. .NET еще быстрее, там код предварительно компилится

    ОтветитьУдалить
  4. .NET сравнивать надо с Java. Хотя можно, конечно, сравнить и ежа с ужом.

    ОтветитьУдалить
  5. Столкнулся с тем, что не все и не всегда могут запустить пример из моего старого поста. И более, не все могут сообразить, как использовать Microsoft COM/DCOM в Python:
    http://vasnake.blogspot.com/2009/07/pywin32.html

    ОтветитьУдалить

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) Java (22) humor (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Manager (15) web-browser (15) Никонов (15) functional programming (14) happiness (14) music (14) todo (14) Klaipeda (13) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) serialization (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)