2010-01-17 4 views
5

Мне интересно, есть ли прирост производительности, как использовать меньше памяти или ресурсов в PHP для:PHP-массив против PHP-константы?

50 различных переменных настройки, сохраненные в массиве, как этого

$config['facebook_api_secret'] = 'value here'; 

Или 50 различных переменных настройки, сохраненные в Constant как этот

define('facebook_api_secret', 'value here'); 

ответ

11

Я думаю, что это в царстве быть микро-оптимизации. То есть разница достаточно мала, что не стоит использовать одно решение над другим ради производительности. Если производительность была критической для вашего приложения, вы бы не использовали PHP! :-)

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

+0

Я понимаю, что я понял, что если бы было лучше, чем другое, так как они могут выполнить одно и то же. – JasonDavis

+1

Другим способом константы можно считать лучше, так как интеллектуальный редактор или среда IDE должны иметь возможность выполнять для них завершение кода. Но для строковых ключей конфигурационного массива выполнение кода не работает. –

1

Производительность для 50 переменных с использованием другой техники кодирования/умных трюков программирования - это неправильный способ делать что-то на PHP. Всегда помните: оптимизатор умнее, чем вы.

1

Вы не получите никакого повышения производительности для любого из них. Реальный вопрос в том, какой из них более полезен.

Для скалярных значений (строк, целых чисел и т. Д.), Которые определены один раз, никогда не должны меняться и должны быть доступны повсюду, вы должны использовать константу.

Если у вас есть какой-то сложной вложенной конфигурации, например:

$config->facebook->apikey = 'secret_key'; 
$config->facebook->url = 'http://www.facebook.com'; 

Вы можете использовать массив или апи конфигурацию от одной из многочисленных рамок там (Zend_Config не плохо)

+0

Константы должны быть MUCH MUCH быстрее, чем класс конфигурации. Нет конструкции и no -> getters() с константами vs class. Они выглядят не так красиво, хотя :) – gus

+0

FYI: Неработающая ссылка – James

3

В моих неофициальных тестах я фактически обнаружил, что константы доступа/определения немного медленнее, чем обычные переменные/массивы.

все равно не будет отличаться; более чем вероятно, что бы вы ни делали с ними, это произойдет через тысячные доли секунды.

Оптимизация базы данных (индексирование, использование EXPLAIN для проверки ваших запросов) и настройка сервера (с использованием APC) будут иметь большее значение в долгосрочной перспективе.

Смежные вопросы