Массив PHP против константы PHP? - PullRequest
5 голосов
/ 17 января 2010

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

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

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

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

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

Ответы [ 4 ]

11 голосов
/ 17 января 2010

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

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

3 голосов
/ 17 января 2010

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

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

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

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

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

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

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

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

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

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

...