PHP tespit değere erişim hızı

3 Cevap php

Doğrudan erişim ve sabit fonksiyonu olan yüksek hızlı? (Ya da daha az bellek, işlemci)

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

Could you give me a sample cord and the reason , so I am happy.

edit: I'm sorry Misunderstood it very much

baskı FOO veya baskı sabit (FAN)

Yüksek hızlı hangisi?

3 Cevap

Ben () inşa Senin 2 argümanlar sürekli nerede var emin değilim, ama constant () fonksiyonu sadece bir argüman alır bir alıcı: Eğer almak istediğiniz sabit adını.

define (), diğer taraftan, bir sabit (belirleyici) değerini tanımlar. Onlar tamamen farklı görevleri yerine getirmek gibi bu iki fonksiyonların performansını karşılaştıran pek mantıklı değil.

Ben size sürekli ne () için kullanılan yanlış düşünüyorum. Sadece sabit bir erişmeniz gerekiyorsa, yok doğrudan: print FOO;

Eğer erişmek istediğiniz sabit ne bilmiyorsanız, size sürekli ihtiyaç (). Yani Böyle "değişken değişkenleri" yapabilirsiniz:

$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'

Yani Eğer bir değişkeni değişken adını ikame edilir.

Sen sabitleri ile bunu yapamaz:

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

Eğer sürekli kullanmak gerekir ():

print constant($name); // prints 'value something or other'

Bu tür basit işlemlerin hızını sorgulamaya zaman, sadece bazı hızlı ve kirli karşılaştırma yapmak ve sonuçları karşılaştırmak için en iyisidir.

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);

Ama ikisi arasında anlamlı bir fark göreceksiniz şüpheliyim.