Heim  >  Artikel  >  Backend-Entwicklung  >  Array- und SplFixedArray-Vergleich (Codebeispiel)

Array- und SplFixedArray-Vergleich (Codebeispiel)

藏色散人
藏色散人nach vorne
2019-05-08 09:23:072686Durchsuche

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(&#39;TEST_COUNT&#39;, 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 &#39;[Array]&#39;, PHP_EOL, &#39;Memory: &#39;, $memory, &#39; bytes&#39;, PHP_EOL, &#39;Write Time: &#39;, $writeTime, &#39;s&#39;, PHP_EOL, &#39;Read Time: &#39;, $readTime, &#39;s&#39;, 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 &#39;[SplFixedArray]&#39;, PHP_EOL, &#39;Memory: &#39;, $memory, &#39; bytes&#39;, PHP_EOL, &#39;Write Time: &#39;, $writeTime, &#39;s&#39;, PHP_EOL, &#39;Read Time: &#39;, $readTime, &#39;s&#39;, 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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yurunsoft.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Vorheriger Artikel:Was macht Tomcat?Nächster Artikel:Was macht Tomcat?