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

    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. НО! самое главное, какой бы Вы стандарт не выбрали, хоть свой собственный - придерживайтесь его в течение всего проекта и не отступайте от него, проект должен быть написан в едином стиле! Это важно.
    Ответ написан
    3 комментария