Оптимизация программ на PHP
Автор Дмитрий Бородин php.spb.ru
- Выносите $переменные из "текстовых строк" - ускорение 25-40%
- Короткие переменные не более 7 символов - ускорение 15%
- Тормозят ли массивы в PHP? Вернее, как именно. Ускорение 40%
- Выносите многомерные массивы из "текстовых строк" - ускорение 25-30%
- Регулярные выражения: PHP(POSIX) vs Perl. Ускорение 60-200%
- Циклы: for, foreach, while, count/sizeof() - ускорение 15%-30%
- Для чтения файла file() быстрее, чем fopen+цикл - ускорение 40%
- Загрузка всех тестов (php файлы)
В этой статье на простых и очевидных примерах рассказано о некоторых способах оптимизировать любую (готовую) программу, не меняя ни одного алгоритма. Для такой оптимизации можно даже написать программу для автоматического выполнения всех рекомендаций, все они очень простые (правда, для начала придется написать парсер пхп-кода).
Выносите $переменные из "текстовых строк" - ускорение 25-40%Одна и таже операция присваивания (либо echo/print для вывода на экран) в зависимости от того, заключены ли переменные в кавычеки или нет, сильно влияет на скорость. В первом и втором вариантах добавлены пробелы, чтобы выравнять размер общего кода для парсинга.- {$x="test".$test; }
- {$x="test $test"; }
- {$x="test";$x.=$test;}
Переменная $test содержит строку "1234567890".счетчик | кол-во вызовов | общее вpемя | сpеднее вpемя | % от min | % от max | общее время | test N1 | 1 | 3.5911 | 3.5911 | 00.0% | 70.9% | | test N2 | 1 | 5.0616 | 5.0616 | 40.9% | 100.0% | | test N3 | 1 | 4.9870 | 4.9870 | 38.9% | 98.5% | |
Итак, никогда не пишите $a="$b", ибо это затормозит программу (в этой строке) на 40%. Однако, если у вас большая строка, где много текста и переменных, различия в скорости уменьшаются, т.к. общие затраты на парсинг становятся намного больше, чем разные по эффективности команды. Но почему бы и не увеличить скорость программы (строк присваивания) почти на четверть таким простым методом? - {$x="test ".$test." test ".$test." test ".$test; }
- {$x="test $test test $test test $test"; }
- {$x="test ";$x.=$test;$x="test ";$x.=$test;$x="test ";$x.=$test;}
счетчик | кол-во вызовов | общее вpемя | сpеднее вpемя | % от min | % от max | общее время | test N1 | 1 | 7.6894 | 7.6894 | 00.0% | 66.0% | | test N2 | 1 | 9.5515 | 9.5515 | 24.2% | 82.0% | | test N3 | 1 | 11.6506 | 11.6506 | 51.5% | 100.0% | |
Читать статью полностью
Дата публикации: 20.06.2008 Прочитано: 7668 раз |