|
|
|
PHP vs. Python vs. Ruby vs. Groovy
|
|||
|---|---|---|---|
|
#18+
Холивар на тему лучшего языка для вебдева можно вести бесконечно. Объективных данных в Сети гораздо меньше, чем необоснованных шапкозакидательских постов. По ссылке находится сравнительный тест свежайших сборок динамических языков: PHP, Python, Ruby, Groovy. Анализируется быстродействие, расход памяти и размер скриптов для решения одной и той же задачи. Краткий вывод: и все-таки Python круче! Модератор: ссылку удалил, цифры выполнения, код и описание компа перенес автор Тестовая среда Все тесты проводились на моем домашнем ноутбуке Intel Core2 Duo T5500 (два ядра по 1.66 GHz) с тремя гигабайтами оперативной памяти и быстрым SSD-диском. Управляет парадом свежая инсталляция 32-битной Windows 7 Home Premium. Каждый скрипт запускался три раза, через некоторое время после прогона всех языков, выполнялся еще один проход по три раза, в качестве итогового времени взяты усредненные значения. Теоретически, каждый процесс должен был выполняться на одном из ядер процессора, загружая его под завязку (что косвенно подтверждалось постоянным показателем загрузки двухядерного процессора в 50%), но график Диспетчера Задач почему-то показывал одинаковую загрузку в 50% обоих ядер во время теста. Во время второго прогона также замерялся расход памяти, согласно показаниям Диспетчера Задач. авторПроизводительность Привожу точные данные по времени выполнения одной итерации скрипта каждым из языков (считается автоматически): табличная форма дает точные цифры, диаграмма позволяет оценить их наглядно. Точные данные производительности Код: plaintext 1. 2. 3. 4. 5. 6. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2010, 13:01 |
|
||
|
PHP vs. Python vs. Ruby vs. Groovy
|
|||
|---|---|---|---|
|
#18+
А ты уверен что твоя методика замера памяти - состоятельная? Откуда цифры брал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2010, 13:36 |
|
||
|
PHP vs. Python vs. Ruby vs. Groovy
|
|||
|---|---|---|---|
|
#18+
Сергей Гоцуляк, 1. не надо пиарить так нагло свой сайт, 2. нафига, простите, свежайшие сборки, если вы используете нотацию PHP 4? Боюсь во всех языках кроме Питона (который вы, вероятно, немного знаете) дело обстоит также, 3. реализации на php и остальных языках не эквивалентны, ибо огромный оверхед от рукотворных геттеров и сеттеров, 4. сборка PHP старая, нет мусоросборщика, 5. в итоге PHP представлен сильно хуже, чем должен быть. Правильно вот так Time per iteration = 3.873240E-4 seconds, memory used max = 3932160 bytes Время исполнения колеблется от 3.5E-4 до 4.15E-4. И это я еще оптимизацией не занимался, а просто написал адекватно на PHP, а не как человек, вчера услышавший это слово. Если скомпилировать в байт код, боюсь результаты будут еще лучше. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2010, 13:58 |
|
||
|
PHP vs. Python vs. Ruby vs. Groovy
|
|||
|---|---|---|---|
|
#18+
P. S. Такое огромное потребление памяти - это из-за того что сборщик мусора ждёт, пока объектов станет 10000 (по умолчанию). Например, если запускать всего 1000 итераций, то скрипт потребляет ВСЕГО 262 кб... это много? А ведь в реальных, не синтетических тестах, именно так и будет - будет сравнительно мало объектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2010, 14:01 |
|
||
|
PHP vs. Python vs. Ruby vs. Groovy
|
|||
|---|---|---|---|
|
#18+
P. S. #2. Мой код не показывает, что PHP лучше всех. Он показывает лишь то, что автор теста - еще один хомячок. Тот, у кого он своровал идею теста для своего бложика, даже специально написал о таких: http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/Update (README CAREFULLY) : I am starting to see hyperlinks to his post with only some of the findings being treated as the link title (eg. X is 100 times faster than Y, X faster than Z). I emphasise once again that I have carefully indicated in the original post that this is but one of many possible microbenchmarks and that you should treat the results as one of many data points. Given the comments I’ve received and some of the links I’ve seen to this post, if I was to make this posting anew, I would choose to assign the title of this post as “Implementing an identical object oriented solution to the Josephus Problem in Java / C++ / Ruby / JRuby / Python / Jython / Groovy and measuring the performance results thereof.” ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2010, 14:04 |
|
||
|
PHP vs. Python vs. Ruby vs. Groovy
|
|||
|---|---|---|---|
|
#18+
an0nym 5. в итоге PHP представлен сильно хуже, чем должен быть. Данное утверждение относится ко всем скриптам, представленным в выборке :-) То есть, взяв любой код под прицел, помедитировав пару часов над оптимизацией, поработав над тюнингом среды, можно значительно улучшить результаты. Я только за то, чтобы собрать оптимальные реализации и протестировать еще раз, скорее всего разрыв между языками станет не таким большим, и среднее время итерации будет стремиться к 50-70 мкс (т.е. к результату Python + Psyco) на той же аппаратной платформе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2010, 16:02 |
|
||
|
PHP vs. Python vs. Ruby vs. Groovy
|
|||
|---|---|---|---|
|
#18+
Сергей Гоцуляк, нет, в других скриптах "почему-то" нет, например, оверхеда для геттеров и сеттеров - как минимум в том же Питоне, а в Ruby эти геттеры и сеттеры реализованы через встроенные генераторы, которые в любом случае создадут более производительный код, так как встроены в язык, а не запрограммированы на нём. То что я сделал - это не оптимизация, это постановка скриптов в равные условия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2010, 16:12 |
|
||
|
PHP vs. Python vs. Ruby vs. Groovy
|
|||
|---|---|---|---|
|
#18+
Сергей ГоцулякДанное утверждение относится ко всем скриптам, представленным в выборке :-) То есть, взяв любой код под прицел, помедитировав пару часов над оптимизацией, поработав над тюнингом среды, можно значительно улучшить результаты. Над оптимизацие чего? Теста? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2010, 16:13 |
|
||
|
PHP vs. Python vs. Ruby vs. Groovy
|
|||
|---|---|---|---|
|
#18+
Сергей Гоцуляк50-70 мкс (т.е. к результату Python + Psyco) Скомпилируйте мой вариант PHP HipHopом и посмотрите. Это Питону надо приближаться - хотя бы к PHP, а лучше к более близким собратьям - Java и, возможно, C#. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2010, 16:15 |
|
||
|
PHP vs. Python vs. Ruby vs. Groovy
|
|||
|---|---|---|---|
|
#18+
Господа, почему бы не поступить по старинке и не посчитать 100000!, как здесь? (шутка юмора) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2010, 16:25 |
|
||
|
PHP vs. Python vs. Ruby vs. Groovy
|
|||
|---|---|---|---|
|
#18+
an0nym Время исполнения колеблется от 3.5E-4 до 4.15E-4. Сделал апдейт записи: UPD2: Оптимизированный PHP-скрипт с форума SQL.ru (без сеттеров-геттеров), показывает более чем в два раза лучшее быстродействие. Среднее время выполнения подскочило до 500 микросекунд на итерацию. Потребление памяти, к сожалению, осталось на прежнем уровне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2010, 16:38 |
|
||
|
PHP vs. Python vs. Ruby vs. Groovy
|
|||
|---|---|---|---|
|
#18+
Сергей Гоцуляк, еще раз повторяю: у вас не свежая сборка PHP. Потребление памяти на 100 000 итераций ~4 Мб и выше не поднимется, скорее всего, даже при 1000000000000000000000000000000000000 итераций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2010, 16:40 |
|
||
|
PHP vs. Python vs. Ruby vs. Groovy
|
|||
|---|---|---|---|
|
#18+
Почему в тест не включён perl? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2010, 16:43 |
|
||
|
PHP vs. Python vs. Ruby vs. Groovy
|
|||
|---|---|---|---|
|
#18+
GysПочему в тест не включён perl? Потому что автор даже с включенным не справился. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2010, 16:44 |
|
||
|
PHP vs. Python vs. Ruby vs. Groovy
|
|||
|---|---|---|---|
|
#18+
an0nymСергей Гоцуляк50-70 мкс (т.е. к результату Python + Psyco) Скомпилируйте мой вариант PHP HipHopом и посмотрите. Это Питону надо приближаться - хотя бы к PHP, а лучше к более близким собратьям - Java и, возможно, C#. Поверхностное гугленье дает цитату с хабра: авторHipHop был создан для улучшения производительности Facebook. Он преобразует PHP код в C++ код и комплирует его с помощью g++. HipHop доступен под opensource лицензией. Интересная штучка, но технологически уже слишком далеко отстоит от методики тестирования. Хотя, возможно, чуть позже прогоню через этот... ммм... трансформатор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2010, 17:07 |
|
||
|
PHP vs. Python vs. Ruby vs. Groovy
|
|||
|---|---|---|---|
|
#18+
an0nym еще раз повторяю: у вас не свежая сборка PHP. Что значит не свежая? Взята последняя версия ветки PHP 5.2, имеющей широкое хождение в массах. Питон, если замечаете, тоже взят не из edge-ветки 2.7 или 3, а наиболее популярный 2.6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2010, 17:11 |
|
||
|
PHP vs. Python vs. Ruby vs. Groovy
|
|||
|---|---|---|---|
|
#18+
Сергей Гоцулякan0nym еще раз повторяю: у вас не свежая сборка PHP. Что значит не свежая? Взята последняя версия ветки PHP 5.2, имеющей широкое хождение в массах. Питон, если замечаете, тоже взят не из edge-ветки 2.7 или 3, а наиболее популярный 2.6. То что ветка py 2.7 вышла в продакшн всего 1.5 месяца назад, а php 5.3 - более года назад. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2010, 17:17 |
|
||
|
PHP vs. Python vs. Ruby vs. Groovy
|
|||
|---|---|---|---|
|
#18+
Модераторы, поправьте, пожалуйста src -> quot. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2010, 17:18 |
|
||
|
PHP vs. Python vs. Ruby vs. Groovy
|
|||
|---|---|---|---|
|
#18+
Сергей ГоцулякИнтересная штучка, но технологически уже слишком далеко отстоит от методики тестирования. Хотя, возможно, чуть позже прогоню через этот... ммм... трансформатор. Тогда всякое упоминание Psyco выкиньте, пожалуйста, из тестирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2010, 17:20 |
|
||
|
PHP vs. Python vs. Ruby vs. Groovy
|
|||
|---|---|---|---|
|
#18+
Сергей Гоцуляк, это утверждение тоже вранье: Можно спорить о субьективных показателях, но с цифрами не поспоришь: программа на Python в два раза короче, чем аналогичный код на Groovy, PHP, C++ или Java. Ruby где-то посередине: программа в полтора раза длинее, чем питонный аналог, но все еще значительно короче, чем остальные скрипты. В общем удалите статью, не позорьтесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2010, 17:21 |
|
||
|
PHP vs. Python vs. Ruby vs. Groovy
|
|||
|---|---|---|---|
|
#18+
an0nymТогда всякое упоминание Psyco выкиньте, пожалуйста, из тестирования. Вы разницу между акселераторами и трансформерами понимаете? Я же не пытался прогонять питонные тесты через трансформер Python -> C++ (http://shed-skin.blogspot.com) Если подскажете акселератор PHP, аналогичный Psyco, я не против его протестировать. Стандартный eAccelerator не дал никакого прироста производительности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2010, 17:44 |
|
||
|
PHP vs. Python vs. Ruby vs. Groovy
|
|||
|---|---|---|---|
|
#18+
Сергей Гоцуляк, When speed is a problem, Python programmers tend to try using a JIT compiler such as Psyco, rewriting the time-critical functions in "closer to the metal" languages such as C, or by translating (a dialect of) Python code to C code using tools like Cython.[20] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2010, 17:47 |
|
||
|
PHP vs. Python vs. Ruby vs. Groovy
|
|||
|---|---|---|---|
|
#18+
2Сергей Гоцуляк, Совершенно бесмысленной работой занимаешься. Те кто знают PHP будут писать на PHP как им не рекламируй более умные языки. Те кто знают Python будут писать на нем как им не рекламируй более умные языки. Те кто знают .... дальше понял: А те кто знают все выше-перечисленное одновременно плюют на все бенчмарки и пишут на том, на чем удобно писать конкретную задачу в конкретный промежуток времени. У меня очень часто в одном проекте собирается по пять-шесть разных языков. Потому что удобно и быстро писать. А как быстро они работают - никого не волнует. Сервер большой у него памяти много. Будет одна страничка на пхп другая на руби - серверу до лампочки, обе сгенерируются за миллисекунды. А гигантские массивы обрабатывать внутри скриптового языка - полный идиотизм. Базы данных придуманы уже много лет тому назад. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2010, 05:07 |
|
||
|
PHP vs. Python vs. Ruby vs. Groovy
|
|||
|---|---|---|---|
|
#18+
White Owl...А те кто знают все выше-перечисленное одновременно плюют на все бенчмарки и пишут на том, на чем удобно писать конкретную задачу в конкретный промежуток времени... Или как начальство (заказчик) прикажет... . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2010, 11:36 |
|
||
|
PHP vs. Python vs. Ruby vs. Groovy
|
|||
|---|---|---|---|
|
#18+
Сергей Гоцуляк wrote: > > > Краткий вывод: и все-таки Python круче! Кто бы сомневался ! Но ты изначально неправильно людей ориентируешь. Язык программирования надо выбирать сердцем. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2010, 12:22 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=99&tid=1343499]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
99ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 423ms |

| 0 / 0 |
