Heim >Backend-Entwicklung >PHP-Tutorial >Array- und SplFixedArray-Vergleich (Codebeispiel)
Das Wesentliche von PHP ist die Verwendung von Arrays. Arrays können bei richtiger Verwendung in allen Datenstrukturen verwendet werden. Es gibt eine gute Sache namens SPL, die uns viele Datenstrukturen zur Verfügung stellt und deren Leistung viel besser ist als die, die wir mit Arrays erreichen können.
Werfen wir heute einen Blick auf SplFixedArray, wie der Name schon sagt, ein Array mit fester Größe. Geben Sie beim Instanziieren die Array-Größe an. Das Array kann während der Verwendung nicht erweitert oder verkleinert werden.
Wenn Sie also dynamische Operationen am Array ausführen, ist es möglicherweise nicht für die Verwendung geeignet, und der Index von SplFixedArray kann nur aus Zahlen bestehen und nicht als Schlüsselwertarray verwendet werden.
Das Folgende ist der Test der 100-W-Lese- und Schreibleistung und der Speichernutzung von Array und SplFixedArray
Code
<?php define('TEST_COUNT', 1000000); $memory = memory_get_usage(); $writeTime = microtime(true); $arr = []; for($i = 0; $i < TEST_COUNT; ++$i) { $arr[] = $i; } $writeTime = microtime(true) - $writeTime; $readTime = microtime(true); for($i = 0; $i < TEST_COUNT; ++$i) { $value = $arr[$i]; } $readTime = microtime(true) - $readTime; $memory = memory_get_usage() - $memory; echo '[Array]', PHP_EOL, 'Memory: ', $memory, ' bytes', PHP_EOL, 'Write Time: ', $writeTime, 's', PHP_EOL, 'Read Time: ', $readTime, 's', PHP_EOL; $memory = memory_get_usage(); $writeTime = microtime(true); $splFixedArray = new SplFixedArray(TEST_COUNT); for($i = 0; $i < TEST_COUNT; ++$i) { $splFixedArray[$i] = $i; } $writeTime = microtime(true) - $writeTime; $readTime = microtime(true); for($i = 0; $i < TEST_COUNT; ++$i) { $value = $splFixedArray[$i]; } $readTime = microtime(true) - $readTime; $memory = memory_get_usage() - $memory; echo '[SplFixedArray]', PHP_EOL, 'Memory: ', $memory, ' bytes', PHP_EOL, 'Write Time: ', $writeTime, 's', PHP_EOL, 'Read Time: ', $readTime, 's', PHP_EOL;
Laufergebnisse
[Array] Memory: 33558608 bytes Write Time: 0.083034038543701s Read Time: 0.022516965866089s [SplFixedArray] Memory: 16003208 bytes Write Time: 0.037343978881836s Read Time: 0.022947072982788s
Fazit
Speichernutzung: SplFixedArray kann mehr als die Hälfte des Speichers einsparen als Array
Schreibleistung: SplFixedArray ist schneller als Array
Leseleistung: 50/50, nach vielen Tests ist die Array-Lesegeschwindigkeit noch schneller
Wenn Sie feststellen können, dass Sie nur das Indexarray verwenden müssen, können Sie dies vorhersagen Anzahl der Mitglieder des Arrays. Es ist offensichtlich besser geeignet, SplFixedArray zu verwenden.
Das obige ist der detaillierte Inhalt vonArray- und SplFixedArray-Vergleich (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!