Pull to refresh

Comments 44

UFO just landed and posted this here
думал будет рассказ про хитрости xdebug / pinba
Php программерам вообще слабо знакомо такое понятие как отладчик, отладчик в их понимании это Chrome )) уж простите за сарказм.
Месяца четыре мусолил одному программеру на Php перейтй c notepad++ на phpstorm, Второму мусолил пол года, второй тока через два года перешел на phpstorm, видимо компетентность и пхп понятия не совместимые… надо бы статью написать что пользоваться plain text редакторами это зло.

А как ваш опыт общения с кодерами относится к "php программерам"? Просто потому что языки совпали и вы сразу за всех решили?

В субботу хабра-выпилы не такие эпичные ((
Вы уж извините меня php программеры, просто не часто в топиках встретишь java C# и питон програмеров. Хватит меня провацировать еще на минусы ))

тут вопрос в другом, Многие программеры которые считают себя гуру программерами редко пользуются форматированием кода. Редко считают что стандарты к ним относится. а использование IDE, подразумевает использование стандартных фишек IDE, и в следствие использование gofmt по умолчанию…

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

но Php способен не только на Wordpress! А вообще php слишком молод для того чтобы по умолчанию принимали профилирование как по умолчанию. Любой платформе-технологии нужно какое то время чтобы понять что есть проблемы утечек, синхронизации потоков, утиной типизации и то что в принципе php придумывалось как Personal Home Page Tools. Этим и обусловлено недальновидность таких парадигм как потоки, утечки памяти и вещей которые не созданы чтобы умирать https://habrahabr.ru/post/179399/
Вы уж извините меня php программеры, просто не часто в топиках встретишь java C# и питон програмеров. Хватит меня провацировать еще на минусы ))


Подписывайтесь на соответствующие «хабы».

тут вопрос в другом, Многие программеры которые считают себя гуру программерами редко пользуются форматированием кода. Редко считают что стандарты к ним относится. а использование IDE, подразумевает использование стандартных фишек IDE, и в следствие использование gofmt по умолчанию…


Многие? У Вас есть соответствующая статистика?
И да, считать себя «гуру» ничего не значит. Все решает: 1) знания; 2) опыт применения; 3) практика использования собственного опыта.\
И IDE — это всего лишь инструмент, и он способствует появлению джуниоров с замашками сеньора.
При чем тут форматирование кода и IDE? Во 1) форматирование кода определяется проектом/командой/требованиями: во 2) IDE (в качестве примера указанный PhpStorm || IntelliJ IDEA (что более верно)) как инструмент представляет функции автоформатирования (до сих пор кривого) с параметрами «по умолчанию» которые не являются стандартом (вопрос еще каким).

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


Множество? Откуда инфа?..
Предположим какой-то % использует. И что? Где логика? Лендинги — это в первую очередь «красота» (не случайно в кавычках, т.к. все мы знаем к чему приводят попытки искусственно повысить конверсию). Но, что за этим скрывается?

Давайте подумаем. Наверное бэкэнд, который должен вычислять конверсию для (???)… Точно! Чего угодно. Добро пожаловать за кулисы мат. фака.

но Php способен не только на Wordpress! А вообще php слишком молод для того чтобы по умолчанию принимали профилирование как по умолчанию. Любой платформе-технологии нужно какое то время чтобы понять что есть проблемы утечек, синхронизации потоков, утиной типизации и то что в принципе php придумывалось как Personal Home Page Tools. Этим и обусловлено недальновидность таких парадигм как потоки, утечки памяти и вещей которые не созданы чтобы умирать https://habrahabr.ru/post/179399/


Хватит читать всякий бред. Нет-нет, конечно, читайте! Это полезно. Но включайте мозг.
Мог бы вам поставить диагноз — хабродроб, но я не доктор.

Если вы разработчик, то примите факт — вы разработчик. Язык — это всего лишь инструмент.

Умейте пользоваться Вашим инструментом, в жизни пригодится.

К слову, не фанат wordpress, но это не означает, что он является чем-то «юродивым». Это всего-лишь CMS. Как бы сказал: «не умеешь использовать — иди дальше».
Если вы разработчик, то примите факт — вы разработчик. Язык — это всего лишь инструмент

Разработчик разрабатывает, языками (программирования) пользуются программисты.
Вы уж извините меня php программеры

Да ничего, и вам всего хорошего, вы держитесь там, только кармы нет.
А с gofmt то что не так?
Нет, просто кто то открыл для себя IDE и теперь считает всех джуниорами. Потом еще будет этап открытия сниффера.
Ыы. А куда идти тем, кто пишет на PHP, использует и WordPress тоже (в том числе для весьма больших и сложных проектов с непростой бизнес логикой и интеграцией с другими платформами), использует PHPStorm (о боги, даже лицензионный!), пишет тесты, юзает CodeSniffer, задрачивает всю команду требованием придерживаться Coding Standards, профилирует и дебажит код так, что при передаче проекта клиенту тестирование не выявляет проблем и со временем работы проекта проблем не возникает (даже на крупных и сильно посещаемых проектах, даже если они запилены на WordPress) и так далее и тому подобное. При этом гуру себя никто не считает и не гуглит в гугле. Куда пройти, не подскажете?
Я не понимаю, чем не устроил notepad++?

Ну для быстрого редактирования файлика-двух он вполне подходит, никто не спорит.

откройте еще мир плагинов к нему и будет все ок )))

Если бы всё было так просто, то не было бы таких инструментов как шторм ;)

Когда человек путает отладку и профилирование, это говорит больше о его квалификации, нежели php-шников.
К сожалению, в учебных заведениях курсы в основном рассчитаны на .net-java разработчиков и они преподаются на порядок лучше, а среди php-шников в основном самоучки, потому на входе знания поменьше. Но если не подаваться в «диджитал» и «молодые амбициозные» компании, то за первых же пару месяцев всё осваивается, и ide, и отладка, и профилирование, и тестирование, и ещё 100500 вещей, которые не особо привязаны к языку.
xDebug, трассировка… достаточно лишь научится использовать и в ваших руках будет полная информация о производительности скриптов

xhprof, кстати, в данном случае на порядок удобнее.

UFO just landed and posted this here

А вы попробуйте, выхлоп оного превзойдёт все ваши самые смелые предположения:


Первый попавшийся скрин из гугла

image


P.S. Там отформатировать можно его по разному, включая количество вызовов какой-либо функции. Т.е. на которую надо обратить особое внимание и оттюнить. Ну и avg + критичные вещи. Короче, инструмент спецом заточенный для анализа подобных штук.

Возможно я не знаю всех тонкостей xDebug, но помоему он не предоставляет возможности проведения множества испытаний с разным набором данных и формирования результирующего сравнительного представления. Тоесть если такое и возможно, то необходимо создание обработчика для xDebug. Всех ближе к тому, что хотелось бы получить Xhprof, но опять же требуются доработки. Я считаю, что реализация на PHP имеет место на существование, поскольку обладает такими плюсами как возможность расширения и легкость установки.
Вы бы хоть какое-то достаточное число итераций делали, чтобы не получались эти замеры 0.0028, сопоставимые с погрешностями.

В go, к примеру, встроенный бенчмарк подбирает число итераций у разных тестов, чтобы они все поработали достаточно и сопоставимое время.
Про идею подбора количества итераций понял.
Про замеры, в данном случае машинные погрешности исключаются не за счет объема выборки (вы скорее всего имели это ввиду) а какраз за счет количества итераций. На графике можно проследить, что даже с таким объемом выборки время выполнения одной функции превышает, а с увеличением объема разница становится существеннее. Но соглашусь, что при бОльшем объеме это было бы еще заметнее.
memory_get_usage() — не найс, ибо показывает количество памяти после вызова функции, а не сколько функция потребляет при работе. А поскольку после окончания вызова функции память которую она занимала освобождается — не удивительно, что потребляемая память у Вас всегда одна и та же — 48.
Если уж хотите колхозить, то для памяти колхозьте через http://php.net/memory_get_peak_usage, но правда придется следовать идее «один запуск пхп — один тест», т.к. иначе не всегда будет понятно чей именно пик зафиксирован.
Остается понять, что проще и выгоднее на момент времени: сидение с дебагом и оптимизация существующих скриптов, или расширение технической платформы на которой выполняется скрипт. Как показывает моя практика, второе всегда выгоднее.
Да и вообще, если говорить в общем о большинстве проектов (и большинство — WEB приложения, оптимизация будет двигаться по этому списку:
1. SQL-оптимизация
2. Оптимизация софта отдачи (NGINX, Apache и прочее. Намеренно использовать -end'ы, чтоб не запутаться)
3. Оптимизация дисковой системы
...100. Оптимизация скриптов PHP.

Я думаю многие согласятся, что сейчас скрипты делают максимально разделенными и простыми. Там нет супер вычислений. В основном — взять из базы, отформатировать и вывести. Или проверить входные данные и записать в базу.
Ожидалось нечто «внутреннее» по заголовку. А по факту — есть же отличные профайлеры. Тот-же blackfire поможет «в один клик» собрать статистику, при том несколько (что-то изменили после очередной итерации «улучшения») слепков и между собой эти слепки сравнить.

А тест посредством замера скорости и получения данных по памяти (не забываем, что «даже» php умеет мусор убирать за собой не будучи убитым) — скорее что-то на коленке и очень прямо сейчас, или совсем нет возможности добавить расширение любимого профайлера.

p.s. Для профилировки памяти можно http://php.net/manual/ru/function.register-tick-function.php прикрутить. Но это на скорость исполнения даст прирост.
к сожалению использование такого анализа скорости я бы не рекомендовал

посмотрите в сторону профилировщиков, например xdebug https://xdebug.org/docs/profiler
Согласен, что любым профилировщиком можно получить много информации и он очень удобен для отладки. Даже для получения усредненных данных в текущем проекте можно добавить замеры с помощью профилировщика, но на сколько здесь будет это обоснованно? Ведь для замеров времени и памяти достаточно одного PHP а для голой установки не будет требования в наличии профилировщика.
Для запуска Web-сервера тоже достаточно одного PHP, давайте отказываться от Apache с Nginx?
ваш сарказм я конечно понял.

но уже довольно давно есть движения в этом направление https://daemon.io/ и http://reactphp.org/

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

Тут не совсем отказ от nginx там скорее отказ от php fpm, но никто не мешает использовать reactphp и nginx вместо php-fpm и nginx.

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

Поиграть и с «php -S» можно, только это не тема для статьи на хабре.
я и не говорил про статью, да и не я её написал.

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

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

Попробуйте взять одну и туже функцию и замерить ее (несколько раз) с помощью вашего класса и с помощью xdebug и посмотрите на сколько различаются данные между собой и на сколько они отличаются их средние и каков разброс величин.
Да, если будем сравнивать профайлер с данным способом различия могут быть, но ведь в нашем случае производим замеры 2х функций при одинаковых условиях, тоесть время выполнения функций может иметь какую-то погрешность, но относительно друг друга они должны иметь сопоставимые результаты.
Так что быстрее — echo или print?
Хотелось бы всё-таки через 15 лет раз и навсегда уяснить.
UFO just landed and posted this here
Only those users with full accounts are able to leave comments. Log in, please.