請注意,這 considerably 快,並且應該在已知陣列大小的情況下使用。以下是一些非常基本的基準測試
<?php
for($size = 1000; $size < 50000000; $size *= 2) {
echo PHP_EOL . "測試大小: $size" . PHP_EOL;
for($s = microtime(true), $container = Array(), $i = 0; $i < $size; $i++) $container[$i] = NULL;
echo "陣列(): " . (microtime(true) - $s) . PHP_EOL;
for($s = microtime(true), $container = new SplFixedArray($size), $i = 0; $i < $size; $i++) $container[$i] = NULL;
echo "Spl陣列(): " . (microtime(true) - $s) . PHP_EOL;
}
?>
輸出結果
測試大小: 1000
陣列(): 0.00046396255493164
Spl陣列(): 0.00023293495178223
測試大小: 2000
陣列(): 0.00057101249694824
Spl陣列(): 0.0003058910369873
測試大小: 4000
陣列(): 0.0015869140625
Spl陣列(): 0.00086307525634766
測試大小: 8000
陣列(): 0.0024251937866211
Spl陣列(): 0.00211501121521
測試大小: 16000
陣列(): 0.0057680606842041
Spl陣列(): 0.0041120052337646
測試大小: 32000
陣列(): 0.011334896087646
Spl陣列(): 0.007631778717041
測試大小: 64000
陣列(): 0.021990060806274
Spl陣列(): 0.013560056686401
測試大小: 128000
陣列(): 0.053267002105713
Spl陣列(): 0.030976057052612
測試大小: 256000
陣列(): 0.10280108451843
Spl陣列(): 0.056283950805664
測試大小: 512000
陣列(): 0.20657992362976
Spl陣列(): 0.11510300636292
測試大小: 1024000
陣列(): 0.4138810634613
Spl陣列(): 0.21826505661011
測試大小: 2048000
陣列(): 0.85640096664429
Spl陣列(): 0.46247816085815
測試大小: 4096000
陣列(): 1.7242450714111
Spl陣列(): 0.95304894447327
測試大小: 8192000
陣列(): 3.448086977005
Spl陣列(): 1.96746301651