Какова производительность php при прямом доступе к строке массива с указанным ключом - PullRequest
4 голосов
/ 12 апреля 2011

У меня вопрос по поводу производительности массива .... как php обрабатывает ключи массива? Я имею в виду, что если я делаю что-то вроде $my_city = $cities[15]; ...., имеет ли php прямой доступ к точному элементу строки в массиве $cities или php выполняет итерации через массив, пока не найдет соответствующую строку?

и если он обращается к строке напрямую ... есть ли разница в производительности между массивом с 100 строками и массивом с 100 000 строками?

как в этом примере $my_city = $cities[15];

Ответы [ 4 ]

6 голосов
/ 12 апреля 2011

Массивы PHP реализованы в виде хеш-таблиц, поэтому доступ к элементам осуществляется как можно более прямым, без перебора всего. Подробнее об алгоритме читайте здесь: http://en.wikipedia.org/wiki/Hash_table

0 голосов
/ 12 апреля 2011

Это также зависит от того, что находится внутри массива.

// $my_city is a reference to the variable
$cities[15] = new stdobj();    
$my_city = $cities[15];

// $my_city is a copy of the array row
$cities[15] = 'foobar';    
$my_city = $cities[15];

Может не быть прямым ответом на ваш вопрос, но ссылка на объект обычно использует меньше памяти, чем копия переменной.

0 голосов
/ 12 апреля 2011

всегда существует очевидная разница в производительности между массивом с 100 строками и массивом с 100 000 строками

0 голосов
/ 12 апреля 2011

Доступ к нему напрямую. За сценой все арифметика указателей памяти. Я с трудом могу поверить, что концепция или реализация массива в PHP чем-то отличается от других языков, таких как C, Java или C #.

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