직접 액세스 및 일정 기능을 고속? (이하 메모리, CPU)인가액세스 속도
define("FOO","VAL");
print FOO;
print constant(FOO);
당신은 나에게 샘플 코드와 이유, 그래서를 제공 할 수 행복하다.
편집 : 미안 해요 오해 그것은 매우
인쇄 FOO 또는 인쇄 상수 (FOO)
고속은 무엇입니까?
직접 액세스 및 일정 기능을 고속? (이하 메모리, CPU)인가액세스 속도
define("FOO","VAL");
print FOO;
print constant(FOO);
당신은 나에게 샘플 코드와 이유, 그래서를 제공 할 수 행복하다.
편집 : 미안 해요 오해 그것은 매우
인쇄 FOO 또는 인쇄 상수 (FOO)
고속은 무엇입니까?
이러한 간단한 작업의 속도에 관해 질문 할 때는 &이라는 빠른 벤치마킹을 수행하고 결과를 비교하는 것이 가장 좋습니다.
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);
하지만 두 가지 사이에 큰 차이가 있음을 알지 못합니다.
나는 당신이 어떤 constant()가 사용되고 있는지 오해한다고 생각합니다. 상수에 액세스하기 만하면 직접 처리하십시오 : print FOO;
액세스하려는 상수를 모르면 constant()가 필요합니다. 나는. 다음과 같이 "가변 변수"를 사용할 수 있습니다 :
$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'
변수의 이름을 변수로 대체합니다.
당신은 상수와 함께이 작업을 수행 할 수 없습니다
$name = 'CONST1';
define('CONST1', 'value something or other');
print $name; // prints the value of $name: 'CONST1'
당신은 상수() 사용해야합니다 :
print constant($name); // prints 'value something or other'
상수 (FOO)는도 유효하지 않습니다. constant() 함수는 문자열 인수 ("상수 유형 인수"가 없음은 물론)가 없으므로 상수 ("FOO") 여야합니다. – deceze