Объекты против массивов - PullRequest
2 голосов
/ 12 января 2010

В данный момент я работаю над сайтом, и основное внимание уделяется эффективности и скорости загрузки, обработки и т. П.

Я использую расширение mysqli для получения битов и бобов своей базы данных, но мне интересно, каков наилучший / наиболее эффективный способ вывода моего набора данных?

В данный момент я использую $ mysqli-> fetch_assoc () и foreach (). Прочитав http://www.phpbench.com, я знаю, что подсчет моих данных в первую очередь имеет значение. (Я собираюсь оптимизировать после сборки)

У меня такой вопрос, что быстрее получить результат в php data? Создание объекта? Числовой массив? Ассоциативный массив? Мои мысли - объект, но я не уверен.

Просто любопытно, так как я не знаком с внутренностями PHP:)

Ответы [ 3 ]

5 голосов
/ 12 января 2010

Существует небольшой тест в документации PHP под комментариями mysql_fetch_object:

SELECT * FROM bench... (mysql_fetch_object)

Время запроса: 5.40725040436
Время выборки: 16.2730708122 (ср .: 1.32130565643E-5)
Провел на форуме: 21.6803212166

SELECT * FROM bench... (mysql_fetch_array)

Время запроса: 5.37693023682
Время выборки: 10,3851644993 (ср .: 7,48886537552E-6)
Карьера: 15.7620947361

SELECT * FROM bench... (mysql_fetch_assoc)

Время запроса: 5,345921278
Время выборки: 10,6170959473 (ср .: 7,64049530029E-6)
Карьера: 15.9630172253

Выбор объекта выполняется медленнее, выбор числового массива, вероятно, немного быстрее, чем использование mysql_fetch_array или mysql_fetch_assoc, но разница незначительна. На самом деле, mysql_fetch_array извлекает как ассоциативные, так и числовые значения, и это быстрее, чем mysql_fetch_assoc, иди разберись ... Но если вы после производительности, просто не используйте mysql_fetch_object.

1 голос
/ 12 января 2010

со страницы руководства mysql_fetch_object()

Примечание: производительность

По скорости функция идентична mysql_fetch_array () и почти так же быстро, как mysql_fetch_row () (разница незначительна)

Как показывает эталонный тест Tatu, есть небольшая разница, но имейте в виду, что цифры были собраны из 100 последовательных запросов. Я бы сказал, что ваша стратегия не беспокоить сейчас, а оптимизировать позже - это хороший выбор.

0 голосов
/ 12 января 2010

Я считаю, что числовой массив, вероятно, будет самым легким, за ним следует ассоциативный массив, а затем объект. Я не думаю, что различия будут иметь большое значение, поэтому любой синтаксис, с которым вам удобнее всего, лучше.

...