Сделать код PHP как можно меньше, не снижая при этом производительность? - PullRequest
1 голос
/ 21 июля 2009

Я пишу систему управления контентом на PHP и хочу, чтобы она была самой маленькой в ​​мире. Я планирую сделать его доступным для всех, как Drupal и Joomla. Но чтобы сделать его таким крошечным, я изменил код на меньший.

Например, я меняю:

$info = parse_ini_file("info.scm"); /* to */ $i=parse_ini_file("info.scm");

просто чтобы сделать его меньше. Но я очень часто использую некоторые функции, такие как preg_replace () ;. Я использую это более 30 раз. Должен ли я сделать функцию, как:

function p($p,$r,$s){preg_replace($p,$r,$s);}
//and than just use:
p($my_regex, $my_replacement, $my_string);

или из-за этого все работает медленнее?

Обратите внимание, что моя цель - сделать его настолько маленьким, насколько это возможно.

Ответы [ 7 ]

16 голосов
/ 21 июля 2009

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

7 голосов
/ 21 июля 2009

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

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

6 голосов
/ 21 июля 2009

Не. Пожалуйста не . Позвольте мне подчеркнуть, что для вас: Пожалуйста, не надо. Уже есть способ слишком большого количества нечитаемого кода, который невозможно прочитать по тем же причинам, что и вы. Место на жестком диске на серверах (практически) не ограничено, никто не заботится о размере ваших файлов PHP.

4 голосов
/ 21 июля 2009

Включение существующей функции в собственную функцию снижает производительность из-за накладных расходов на вызов функции.

Если вы действительно заботитесь о размере пакета, поставьте свою CMS в виде Phar-архива. Они могут быть сжаты bzip2 и могут быть выполнены напрямую. См. http://www.php.net/manual/en/phar.using.intro.php, чтобы узнать, как использовать и создавать Phar-архивы.

1 голос
/ 31 июля 2009

Если вы сделаете это, пожалуйста, не публикуйте исходный код в любой форме - сохраните его как личный проект для вашего собственного интереса. Попытка уменьшить объем кода до максимально возможной степени не совсем бесполезна (как учебное упражнение), но с кем-то еще будет очень трудно работать, и вы не получите много друзей с этим :)

1 голос
/ 21 июля 2009
Сокращение

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

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

Также имейте в виду, что встроенные функции PHP работают быстрее, чем пользовательские функции.

0 голосов
/ 22 июля 2009

до того, как APC существует, это использование является обычной техникой:

  • удалить комментарии
  • минимизировать имена функций
  • и т.д.

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

Вам нужно учесть, что теперь APC создает байт-код , и php не нужно анализировать каждый раз, когда запускается скрипт. Я бы порекомендовал вам: храните ваши файлы в хорошем документированном виде, чтобы любой другой разработчик мог видеть, что вы пытались сделать. используйте имена связных функций, которые могут их описать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...