Статьи,обзоры,справочники по PHP
Выносите многомерные массивы из "текстовых строк" - ускорение -%. Одномерные можно не выносить.
При использовании многомерных массивов в строках наблюдается заметное снижение скорости Из-за многомерности нужно заключать переменные в парные фигурные скобки.
- {$x="test ".$myarray["name"]["second"][1]." test"; }
- {$x="test {$myarray[name][second][1]} test"; }
- {$x="test ";$x.=$myarray["name"]["second"][1];$x=" test";}
счетчик |
кол-во вызовов |
общее вpемя | сpеднее вpемя |
% от min | % от max | общее время |
test N1 | 1 | 3.5369 | 3.5369 | 00.0% | 69.9% | |
test N2 | 1 | 5.0605 | 5.0605 | 43.1% | 100.0% | | | test N3 | 1 | 4.6017 | 4.6017 | 30.1% | 90.9% | | |
Тот же пример с ассоциативным 3-х мерным массивом, но с обращением к элементу по его индексному номеру:
- {$x="test ".$myarray[3][2][0]." test"; }
- {$x="test {$myarray[3][2][0]} test"; }
- {$x="test ";$x.=$myarray[3][2][0];$x=" test";}
счетчик |
кол-во вызовов |
общее вpемя | сpеднее вpемя |
% от min | % от max | общее время | test N1 | 1 | 3.3012 | 3.3012 | 00.0% | 73.1% | |
test N2 | 1 | 4.1667 | 4.1667 | 26.2% | 92.3% | | | test N3 | 1 | 4.5145 | 4.5145 | 36.8% | 100.0% | | |
Разница в 1 и 2 вариантах очень мала. Это говорит, что потери на не эффективное использование кавычек не слишком большое, чем доступ к массивам (см. тесты в первой главе).
- {$x="test".$myarray["test"]."test";}
- {$x="test$myarray[test]test"; }
- {$x="test{$myarray[test]}test"; }
счетчик |
кол-во вызовов |
общее вpемя | сpеднее вpемя |
% от min | % от max | общее время | test N1 | 1 | 2.8495 | 2.8495 | 00.0% | 80.9% | |
test N2 | 1 | 2.9519 | 2.9519 | 03.6% | 83.9% | | | test N3 | 1 | 3.5202 | 3.5202 | 23.5% | 100.0% | | |
А теперь, на основании всех трех тестов, однозначный вывод: использовать фигурные скобки для обозначения границ имени элемента многомерного массива НЕЛЬЗЯ. Это сильно снижает скорость работы - 25-30% (в третьем варианте от простого добавления скобок скорость понизилась на четверть). Не использовать скобки нельзя. Следовательно, единственный способ не терять 30% скорости - выносить многомерные массивы из скобок.
Содержание раздела
|
|
|
|
|
|