LINUX.ORG.RU

Почему PHP7 быстрее чем Python3?

 , , ,


2

3

Раньше было же наоборот когда PHP был на 5 версии? Есть ли смысл дальше учить Python для веба? Сейчас последние годы замечаю Django/Flask не очень активны в отличии от других технологий как Node.js, PHP/Laravel. Python в основном зациклился в машин лёрнинг.

UPD. Быстрее я имел ввиду производительнее. JS для ноды конечно круто, но беспорядочный синтаксис js не нравится в нём писать, и c php тоже такая проблема. Но как бы они есть, как laravel и nodejs. Их производительность намного превосходит чем питон.

Deleted

Последнее исправление: Deleted (всего исправлений: 4)

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

И т.д. А вот в ПХП под массивом понимается нечто иное, и как выразить в O-нотации скорость доступа, например, неочевидно. Ну и зачем устраивать сложности на ровном месте? И главное, где ещё в ПХП грабли затесались, может там и под односвязным списком что-то своё подразумевается?

При этом нормальные реализации массивов/односвязанных списков в пхп тоже есть.

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

При этом нормальные реализации массивов/односвязанных списков в пхп тоже есть.

Позвольте полюбопытствовать ссылки на сии творения?

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

Позвольте полюбопытствовать ссылки на сии творения?

Хотя я немного ошибся, есть реализация двусвязного списка а не односвязанного. Но вот:

https://www.php.net/manual/ru/class.splfixedarray.php

https://www.php.net/manual/ru/class.spldoublylinkedlist.php

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

это и называется нет. не надо желаемое за действительное выдавать.

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

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

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

зачем существуют SplFixedArray и остальные Spl* структуры?

Это легаси, они ни чем не лучше массивов сейчас. Альтернатива массивам - это ds. Вроде бы есть планы добавить его в коробочную сборку.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от ugoday

вместо того, чтобы честно упасть в месте возникновения проблемы, php молча присвоит «Null в качестве значения»

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

no-such-file ★★★★★
()
Ответ на: комментарий от ugoday

А как пхп обеспечивает константное время доступа?

Ты удивишься, но хэш-массивы имеют константное время доступа.

no-such-file ★★★★★
()
Ответ на: комментарий от Ford_Focus

composer жи есть! Хоть и не встроенный.

И да, сейчас действительно сложно найти современную приблуду, где бы не было ПМ.

Вот, что сложно. А не представления tz4678 о пыхе 2008

Twissel ★★★★★
()
Ответ на: комментарий от no-such-file

Упорядоченный ассоциативный массив

хэш-массивы

Так упорядоченный или хеш?

хэш-массивы имеют константное время доступа.

Ну, не поспоришь. О том, что хеш массивы работают тем медленнее, чем больше соотношение используемой памяти к аллоцированной памяти; что вычисление хеш функции не бесплатное, а для некоторых типов ещё и довольно дорогое; что если выбрать «дешёвую» хеш функцию, то будут коллизии, которые замедлят хеш массив мы забудем / умолчим. Хеш таблицы - великая вещь (без сарказма), но иногда полезно иметь непрерывный кусок памяти, в котором расположены N объектов. Такой массив будет иметь неизменный размер, зато доступ к i-му элементу будет настолько быстрым, насколько это в принципе возможно.

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

он таковым был до середины 10-х. идем далее по списку: странные имена функций и непонятка с порядком аргументов (в строковых функциях строка может быть первым, вторым и хз каким элементом, хотя по логике вещей первым аргументом передаваемым в функцию должен быть объект над которым производятся манипуляций), функции возвращают null, false, генерируют варнинги, приходится постоянно сравнивать значения то на null, то на false, самих функций 100500 в глобальном пространстве имен чьи имена нельзя запомнить и про ошибки стоит вспомнить, про всякие костыли, которые нужны чтобы заставить функции бросать исключения либо собаки в коде. стандартное поведение функции в питон при ошибке: бросить исключение, в пхп - вернуть false, null, высраться в консоль (если error reporting e_all), соснуть *уйца, сделать бочку и т.п. стандартного пакетного менегера нет и точка. еще в пхп очень странная ситуация с переменными, которые сами появляются:

file_get_contents("http://example.com");
var_dump($http_response_header); // например, эта после выполнения запроса

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

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

я уже молчу про то, что sql-инъекции - это типично php-шная тема. + на данный момент значительная часть старых сайтов, которые спасал magic quotes gpc мигрировали на последние версии пыха и стали уязвимыми. пример сайт key.ru, где уязвимость была в форме для регистрации.

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

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

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

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

про jQuery шедеврально

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

Соглашусь пожалуй со всем, кроме пакетного менеджера — composer это де-факто стандарт для современных проектов. Как бы у тебя от этого факта не пригорало, но ПМ у пыха есть :-)

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

упорядоченный или хеш?

Что мешает хранить ключи хэша списком?

no-such-file ★★★★★
()
Ответ на: комментарий от tz4678

Это всё стоны про легаси трэшак. Хочешь по феншую - бери ZF, SF и т.п. где всё что нужно обёрнуто в классы, бросает исключения и проверяет типы. Старые функции сегодня можно рассматривать только как низкоуровневые, т.е. не для прикладного кода. Это называется эволюция, Карл.

no-such-file ★★★★★
()
Ответ на: комментарий от ugoday

Можете чем-то подтвердить свои слова?

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

no-such-file ★★★★★
()
Ответ на: комментарий от tz4678

можно еще по памяти примеров набрать

Вряд ли. Твой абзац выше и есть перечисление всего самого ужасного что есть в PHP. Напоминание о количестве функций и порядке аргументов меня вводит в ступор всякий раз. Я теперь еще полчаса заснуть не смогу :(

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

nginx использует неблокирующие сокеты - это асинхронный сервер, фреймворки последних лет тоже асинхронные.

tz4678 ★★
()

беспорядочный синтаксис js? да там поприличней синтаксис чем в python ну или мне по крайней мере так кажится потому что он C подобный и я с C начал изучение программирование.

PHP хорош что бы писать простенькие формочки, щас модно везде жырными фреймворками пользоваться и PHP + жырный фреймворк это ужасно. Вот Ruby on Rails мне нравится да и ruby как язык программирования очень даже хорош намного приятнее pythonа. PHP/Laravel это просто омерзительный фреймворк. плювался от него несколько дней и бросил проект ну и к чёрту противно.

iluha16
()

Узкое горлышко, обычно база данных/плохие запросы к бд.

  • На питоне к примеру работают YouTube, Reddit
  • На руби Github, SoundCloud, Twitch
  • На ноде Shutterstock, LinkedIn
  • На пхп BlaBlaCar, Facebook

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

Php стал побыстрее, но при пятой версии был и hhvm. Я говорю был, из-за того, что сейчас фейсбук больше не будет гнаться за совместимостью HHVM с PHP. А та же википедия сначала перешла на hhvm, теперь переписывают всё на php7.

Стоит ли учить python дальше, ты должен решить сам, как минимум для того, что бы лет так через 5 не говорить "Какие они засранцы, что посоветовали мне учить/не учить невостребованный/востребованный язык. Но в любом случае, если ты будешь специалистом в какой-то области, то всегда найдёшь себе работу.

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

xSudo ★★★
()
Ответ на: комментарий от ya-betmen

Когда он был на питоне, это был очень хороший сайт. Жаль что гугл превращает в говно всё чего касается.

anonymous
()
Ответ на: комментарий от tz4678
условно-удобных orm среди которых джанговский лучший и куча мусора

Видимо другими orm ты не пользовался.

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

хотя условно-универсальная только для sql баз данных. django-orm - это не orm, которая привязана к django, это целый класс django-одобных orm реди которых, например, mongoengine или tortoise (асихнронная orm для sqlite, mysql и postgres (схемы не поддерживает, так что чисто номинальная поддержка))

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

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

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

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

Нода это КУЧА кода. Там одних абстракций слоев 800...

В слух. От того что жизнено.

sphericalhorse ★★★★★
()

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

Шума вокруг Джанги и Фласка меньше, чем вокруг Ларавеля потому, что в Джанге и Фласке всё и так давно работает.
Вангую, что вокруг Ларавеля много шума потмоу, что сообщество ПХП во многом состоит из пролетарских хипстаров, которым нравится много писать в твиттеры, ну и еще Ларавель выглядит как попытка ПХПшников доказать таки всему миру (и себе тоже), что ПХП не такой плохой.

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

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

вместо того, чтобы честно упасть в месте возникновения проблемы, php молча присвоит «Null в качестве значения»

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

Похоже, к нам на огонёк пришли сатанисты.

Нет, это вы заглянули в наш милый адок. Велкам!

Если без шуток, то поведение «php молча присвоит что-нибудь» — предпочтительно в подавляющем большинстве случаев, просто в силу специфики веба. В силу этой же специфики «не взлетел» xhtml. Это не хорошо и не плохо, это реальность.

А вот когда подобные практики пытаются применять за пределами веба — это действительно зло. Сюда же, кстати, и т.н. «веб-версии» традиционных десктопных приложений.

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

Такой массив будет иметь неизменный размер, зато доступ к i-му элементу будет настолько быстрым, насколько это в принципе возможно.

Только вот если взять рандомный кусок пыхокда сток на 1000, то можно заметить, что пхп-шные «массивы» в большинстве случаев используются именно как хеш-таблицы, и крайне редко есть применение настоящим массивам.

А так да, правильно всё.

webmonkey
()
Последнее исправление: webmonkey (всего исправлений: 1)
Ответ на: комментарий от sphericalhorse

Будь ты проклят! (забираешь у меня еду в работе)

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

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

Ошибаешься. Это огромное преимущество пыха.

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

Поясню.

Сообщение вида: «Ахтунг! Алярм! Случилось непоправимое! Ты будешь первым, если тут же не захлопнешь эту страничку!» — а для пользователя все сообщения выглядят именно так — побудит этого пользователя бежать оттуда в ужасе и не возвращаться больше никогда-никогда.

С другой стороны, оборваная, полупустая «недогруженная» страничка — это понятно, это не страшно, это привычно, это поправимо, это наша молодость, в конце концов! Это просто надо сделать reload, и жизнь вновь заиграет всеми красками.

Поэтому в очень многих случаях (далеко не во всех, и на это в том же пыхе есть средства) надо отдавать что есть, и стараться не упасть до последнего.

И, если говрить о пыхе, то он уже довольно давно позволяет исполнять подобные художества наиболее комфортно. Хотя, до сих пор существуют отдельные безмерно одаренные пи...онеры, которые слыхом не слыхивали ни о display_errors=off, ни о error_log, и до седых мудей лепят «собак».

Это если очень вкратце и очень грубо.

Понятно, что в нормальной, традиционной разработке такие ситуации неприемлимы. Правда, и выбор пхп за пределами веба — за пределами моего понимания.

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

Но ведь, это задача фронтенда делать так, чтобы пользователь не пугался. Потом, мне не понятно где вы проводите черту. Т.е. если показывать ошибочный результат лучше, чем сообщение об ошибке/никакого результата лучше для вэба, почему это же _не_ лучше и для всего остального? А если за пределами вэба предпочтительнее противная тактика, то может всё же и в вэбе 503-я ошибка не так уж и всех напугает?

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