2009-06-29 2 views
-2

ли прямой доступ и постоянная функция высокоскоростной? (Или меньше памяти, процессор)Скорость доступа к значению фиксации в PHP

define("FOO","VAL"); 
print FOO; 
print constant(FOO); 

Не могли бы вы дать мне пример шнура и причину, поэтому я я счастлив.

редактировать: Я сожалею Misunderstood это очень

печать FOO или печать постоянной (FOO)

Какой высокоскоростной?

+0

константа (Foo) даже не действует. Функция constant() принимает строковый аргумент (не говоря уже о том, что нет аргументов постоянного типа), поэтому он должен быть постоянным («FOO»). – deceze

ответ

2

Я не уверен, где у вас есть 2 аргумента const(), но функция constant() - это геттер, который принимает только один аргумент: имя константы, которое вы хотите получить.

define(), с другой стороны, определяет значение константы (сеттера). Сравнение производительности этих двух функций не имеет большого смысла, поскольку они выполняют совершенно разные задачи.

0

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

define("FOO", "VAL"); 
$iterations = 10000; 
$start_1 = microtime(true); 
for ($i = 0; $i < $iterations; $i++) { 
    print FOO; 
} 
$end_1 = microtime(true); 
$time_1 = $end_1 - $start_1; 

$start_2 = microtime(true); 
for ($i = 0; $i < $iterations; $i++) { 
    print constant('FOO'); 
} 
$end_2 = microtime(true); 
$time_2 = $end_2 - $start_2; 

printf('"print VAL;" %d iterations: %.5F s', $iterations, $time_1); 
print PHP_EOL; 
printf('"print constant(\'FOO\');" %d iterations: %.5F s', $iterations, $time_2); 

Но я сомневаюсь, что вы увидите существенную разницу между ними.

0

Я думаю, вы неправильно поняли, для чего используется константа(). Если вам нужно только получить доступ к константе, сделайте это прямо: print FOO;

Если вы не знаете, к какой константе вы хотите получить доступ, вам понадобится константа(). То есть вы можете сделать «переменные переменные» следующим образом:

$name = 'var1'; 
$var1 = 'value something or other'; 
print $$name; // prints the value of $var1: 'value something or other' because: 

${$name} -> ${"var1"} -> $var1 -> 'value something or other' 

I.e. вы заменяете имя переменной переменной.

Вы не можете сделать это с константами:

$name = 'CONST1'; 
define('CONST1', 'value something or other'); 
print $name; // prints the value of $name: 'CONST1' 

Вы должны будете использовать постоянную():

print constant($name); // prints 'value something or other' 
Смежные вопросы