MasterGerold
@MasterGerold

Влияют ли комментарии и количество строк на скорость загрузки файла?

Доброго времени суток! Интересует такой вопрос о комментариях в php файлах. Я прекрасно понимаю что они должны быть что бы было понятнее что именно содержится в данной функции (или классе и т.д.). Но так как файл каждый раз читается интерпретатором (упустим кэширование) то должно быть он тратит какую то доли секунду на пробежку по комментариям. Я не ожидаю ответа что это увеличит производительность на разы, я просто хочу узнать есть ли хоть какая то утрата времени интерпретатором на комментарии. И ещё такой момент, есть ли смысл ставить дополнительные переносы строк и обязательно ли переносить открывающуюся фигурную скобку на новую строку? Заранее спасибо!
  • Вопрос задан
  • 932 просмотра
Решения вопроса 1
Wolfnsex
@Wolfnsex Куратор тега PHP
Если не хочешь быть первым - не вставай в очередь!
Но так как файл каждый раз читается интерпретатором (упустим кэширование) то должно быть он тратит какую то доли секунду на пробежку по комментариям.

Да, но нет. Предполагается, что PHP-код работает в *nix/Linux среде. Linux, не настолько глупая ОС, что бы позволить себе такую роскошь, как дёргать с жесткого диска каждый раз, как он Вам понадобился. Часто запрашиваемые файлы хранятся в оперативной памяти либо, в буфере самого жесткого диска. Соответственно затраты на чтение самого файла - довольно минималистичны, это наносекунды на чтение мегабайтов кода и файлов.

Далее, файл начинает "парсится", т.е. читаться интерпретатором. На этом этапе мы потеряем ещё несколько нано-секунд на чтение нескольких десятков/сотне/тысяч строк с комментариями (которые надо заметить, как таковыми комментариями не всегда являются, в PHP-фреймворке Symfony 2 и 3 - комментарии являются разновидностью управляющих конструкций, в т.ч. в них могут быть записаны роуты, связи и прочие дела. Аналогичные практики есть так же в C#/ASP.NET и в других фреймворках/технологиях).

Далее, в PHP (как и во многих других интерпретируемых языках, включая Java, C#, Python и другие) есть такая штука, которая компилирует Ваш файл в байт-код, удаляя оттуда всё, что когда-то было комментариями и прочими штуками, нужными для "человеко-понятности" и превращает Ваш исходный код в бинарный файл. В некоторых случаях, это может быть просто высоко-оптимизированный код, в некоторых случаях это может быть сразу машинный код (для процессора).

Например, Opcache (*по этой ссылке так же ответ на Ваш вопрос) уже поставляется "искаропки" с версии PHP 5.5, а в PHP 7.0 ещё и производительность интерпретатора возросла примерно в 2 раза (но это не мешает многим и многим проектам работать на PHP ветки 5.х).

А ещё есть HHVM довольно специфическая штука, которая, насколько я помню, конвертирует PHP-код в C/C++ код, а потом компилирует его, за счёт этого производительность увеличивается иногда в разы. Вещь специфическая, и любимый блог "о прогулках с собакой" на WordPress'е запустить на нем так вот сходу - вряд ли получиться, но если стоит цель оптимизировать всё и всё - возможно HHVM станет отличным решением.

Так же Вы можете посмотреть в сторону мега-популярного на просторах бывшего СССР CMS/Фреймворка по имени "1с Битрикс", если обратить внимание на скорость его работы и ряд других особенностей, в т.ч. необходимость настройки сервера таким образом, что кроме Битрикса там уже почти ничего не работает + он не поддерживает PHP версии выше 5.6 (хотя вот уже с год они пытаются перевести его на ветку 7.х) + он аццки тормозной, генерирует тонны запросов по поводу и без него и так далее... Но это не мешает ему прекрасно жить и развиваться и продаваться и ещё красоваться на сайтах некоторых ведущих в своей области компаний, в частности "Эльдорадо" и если мне не изменяет память - "М.Видео", ну и многих других, например "ТеремПро".

Подводя итог, хочу Вам посоветовать не забивать голову всякой ерундой на тему оптимизации кода путем вычистки оттуда комментариев... при том уровне оптимизации, о котором Вы говорите - код пишут на чистом Си, а не на PHP. И, в продолжение банкета, вот Вам пример кода из документации по Symfony:
/**
 * @Route("/blog/{date}/{slug}/comments/{comment_slug}")
 * @ParamConverter("post", options={"mapping": {"date": "date", "slug": "slug"}})
 * @ParamConverter("comment", options={"mapping": {"comment_slug": "slug"}})
 */
public function showCommentAction(Post $post, Comment $comment)
{
}


Здесь комментарий несёт не информационно-смысловую, а непосредственно логическо-кодовую нагрузку. Подумайте, что будет если его удалить?

*подсказка - код перестанет работать должным образом! :)

----------

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

За Вас всю эту работу сделает IDE. Возьмите PHPStorm или NetBeans, среди прочих, они так же отлично подходят для написания кода, в т.ч. PHP-кода. На счёт NetBeans не скажу, но PHPStrorm точно умеет подстраивать код под стандарты PSR (о которых Вам писали выше), рекомендую ознакомиться со всеми из них, их не так много. А потом, настроить IDE на то, что бы она автоматически форматировала код. В NetBeans (и PHPStorm при выборе раскладки NetBeans) - это клавиши Alt+Shift+F. НО! самое главное, какой бы Вы стандарт не выбрали, хоть свой собственный - придерживайтесь его в течение всего проекта и не отступайте от него, проект должен быть написан в едином стиле! Это важно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
хочу узнать есть ли хоть какая то утрата времени интерпретатором

Ответ десяти или стотысячные доли секунды является по вашему потерей времени?

есть ли смысл ставить дополнительные переносы строк

Есть

обязательно ли переносить открывающуюся фигурную скобку на новую строку?

Зависит от стиля кодирования принятого в команде. Некоторые только так и делают, а некоторых это бесит до невозможности
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы