Гру 272011
Тормозят ли массивы в PHP? Вернее, как именно. Ускорение 40%.
А вот и не тормозят. Я где-то читал, якобы ассоциативные массивы в PHP жутко тормозят. Конечно, тест простой, но большой разницы между непрерывным простым (1), простым (2) и ассоциативным (3) массивами нет (элемент 0000 преобразуется в 0 – это же число, а не строка). И уж явно не тормозят “не ассоциативные не сплошные массивы”.
- {$test[0000]=1;$test[0001]=1;$test[0002]=1;$test[0003]=1;$test[0004]=1; }
- {$test[1000]=1;$test[1001]=1;$test[1002]=1;$test[1003]=1;$test[1004]=1; }
- {$test["aa"]=1;$test["bb"]=1;$test["cc"]=1;$test["dd"]=1;$test["ee"]=1; }
- {$test[aa]=1; $test[bb]=1; $test[cc]=1; $test[dd]=1; $test[ee]=1; }
- {$test[0][0]=1;$test[0][1]=1;$test[0][2]=1;$test[0][3]=1;$test[0][4]=1; }
- {$test[2][1]=1;$test[3][8]=1;$test[4][9]=1;$test[33][99]=1;$test[123][99]=1;}
- {$test[a][b]=1;$test[x][y]=1;$test[d][c]=1;$test[a][s]=1;$test[b][n]=1; }
счетчик | кол-во вызовов |
общее вpемя |
сpеднее вpемя |
% от min | % от max | |
test N1 | 1 | 5.3924 | 5.3924 | 01.1% | 28.0% | |
test N2 | 1 | 5.3332 | 5.3332 | 00.0% | 27.7% | |
test N3 | 1 | 5.7651 | 5.7651 | 08.1% | 29.9% | |
test N4 | 1 | 7.6543 | 7.6543 | 43.5% | 39.7% | |
test N5 | 1 | 6.6649 | 6.6649 | 25.0% | 34.6% | |
test N6 | 1 | 6.6221 | 6.6221 | 24.2% | 34.3% | |
test N7 | 1 | 19.2820 | 19.2820 | 261.5% | 100.0% |
Что тут можно комментировать.. все очевидно. Доступ к элементу одномерного ассоциативного массива по имени, не заключенному в кавычки, тормозит процесс на треть (относительно того же примера, но в кавычках). А вот в двухмерном массиве программа работает медленне аж в 2.5 раза! После такого теста хочешь не хочешь, а в любой программе пожертвуешь удобством – обращение к элементам массива по имени без кавычек.