Маленькое исследование PHP
2009.10.25Большинство задач можно решить несколькими способами, различающимися по скорости работы и по удобству их применения. Удобство достаточно легко оценить, пусть и слегка субъективно, а вот со скоростью не все так очевидно. Поэтому на досуге был написан маленький скриптик, который позволяет оценивать скорость работы PHP-кода. Скрипт последовательно прогоняет несколько фрагментов кода несколько тысяч раз (от тысячи до миллиона), а результаты выводит на экран и, одновременно, записывает их в лог. Особо ценна функция накапливания результатов, что позволяет прогонять сотни тестов для получения более достоверного результата.
Тесты проводились на двух машинах – на ноутбуке Acer Aspire 9300 и на сервере с Unix. Результаты получились несколько неожиданными. Пару из них ниже.
Отдельные переменные или массив
Что лучше для использования – куча отдельных переменных или массив? Обычно используются отдельные переменные, но все таки у массивов есть определенные удобства для работы, поэтому появилась мысль постепенно перейти на массивы в некоторых местах.
Выполняемая команда |
Ноутбук |
Сервер |
Среднее |
Среднее нормализованное |
$ruen_options_title = 123; |
78.14% |
75.53% |
76.84 |
79.35% |
$ruen_options['title'] = 123; |
98.47% |
94.63% |
96.55% |
99.71% |
$ruen['title'] = 123; |
97.96% |
95.70% |
96.83% |
100.00% |
Самым быстрым оказалось использование просто переменных, а не массивов – быстрее на 20.4%. Поэтому
использование простых переменных предпочтительнее. Забавно, но вот длина имени массива сыграла совсем неожиданно – более длинное имя дало лучшие результаты на сервере и в общем зачете, но ноуте получилось более логично – короткое имя дало большую скорость.
Оптимальная длина переменных
В прошлом тесте была затронута тема длины имени переменных, поэтому пришлось проводить соответствующий тест. И результаты этого теста оказались крайне удивительными. Впрочем, смотрите сами!
Выполняемая команда |
Ноутбук |
Сервер |
Среднее |
Среднее нормализованное |
$p = 123; |
94.82% |
94.65% |
94.74% |
100.00% |
$dlinnaya_peremennaya = 123; |
94.96% |
90.89% |
92.93% |
98.09% |
$dlinnaya_peremennaya_dlya_ispytanij_skorosti_raboty_php = 123; |
94.25% |
90.71% |
92.48 |
97.62% |
Что еще? Использование «$num.', текст'» быстрее «"$num, текст"» практически вдвое, использование «echo» так же быстрее «print». Наверное, надо составить что-то вроде сводной таблицы...
Да! То, что один способ быстрее другого, не значит, что это панацея! У каждого способа есть свои предназначения, на это и надо ориентироваться. Иначе получится как с таблицами и слоями в вёрстке...
Теги: ПрограммированиеСледующий пост: Анатомия стартапа (#56, 2009.11.17)Предыдущий пост: Добавление изображений в текстовом редакторе RUEN (#54, 2009.10.25)Пост #55. Постоянная ссылка на пост: https://exogens.ru/blog/post/malenkoe-issledovanie-php/