Индексация массива PHP: $array[$index] vs $array["$index"] vs $array["{$index}"]

Я рассчитал время для трех php-cgi способов использования индекса php-errors следующим образом:

for ($ii = 0; $ii < 1000000; $ii++) {
   // TEST 1
   $array[$idx] = $ii;
   // TEST 2
   $array["$idx"] = $ii;
   // TEST 3
   $array["{$idx}"] = $ii;
}

В первом php-frameworks наборе тестов использовалось php-date $idx=0, во втором наборе использовалось php $idx="0", а в третьем наборе использовалось php-readfile $idx="blah". Хронометраж производился php-session с использованием microtime() дифференциалов. Я php использую WinXP, PHP 5.2, Apache php-date 2.2 и Vim. :-)

И вот результаты:

Используя $idx = 0

$array[$idx]            // time: 0.45435905456543 seconds
$array["$idx"]          // time: 1.0537171363831 seconds
$array["{$idx}"]        // time: 1.0621709823608 seconds
ratio "$idx" / $idx     // 2.3191287282497
ratio "{$idx}" / $idx   // 2.3377348193858

Используя $idx = "0"

$array[$idx]            // time: 0.5107250213623 seconds
$array["$idx"]          // time: 0.77445602416992 seconds
$array["{$idx}"]        // time: 0.77329802513123 seconds
ratio "$idx" / $idx     // = 1.5163855142717
ratio "{$idx}" / $idx   // = 1.5141181512285

Используя $idx = "blah"

$array[$idx]           // time: 0.48077392578125 seconds
$array["$idx"]         // time: 0.73676419258118 seconds
$array["{$idx}"]       // time: 0.71499705314636 seconds
ratio "$idx" / $idx    // = 1.5324545551923
ratio "{$idx}" / $idx  // = 1.4871793473086

Итак, $array[$idx] — безоговорочный php победитель конкурса производительности, по php-readfile крайней мере, на моей машине. (Результаты php-cgi были очень воспроизводимыми, кстати, я php-date запускал его 3 или 4 раза php-include и получил те же результаты.)

php

syntax

2022-07-20T08:00:23+00:00