Heim  >  Artikel  >  Backend-Entwicklung  >  Eine Erklärung der Leistung zwischen PHP implode/explode, serialize, json und msgpack

Eine Erklärung der Leistung zwischen PHP implode/explode, serialize, json und msgpack

jacklove
jackloveOriginal
2018-06-09 11:07:461966Durchsuche

php implode/explode, serialize, json, msgpack Leistungsvergleich

Erste Verwendung implode, serialize, json_encode, msgpack_packErstellen Sie vier Textdateien zum Testen.

Der Erstellungscode lautet wie folgt:

<?php
$arr = array(
    &#39;content1&#39; => &#39;一二三四五六七八九十&#39;,
    &#39;content2&#39; => &#39;一二三四五六七八九十&#39;,
    &#39;content3&#39; => &#39;一二三四五六七八九十&#39;
);
echo file_put_contents(&#39;implode.txt&#39;, implode(&#39;,&#39;,$arr), true).&#39;<br>&#39;;
echo file_put_contents(&#39;serialize.txt&#39;, serialize($arr), true).&#39;<br>&#39;;
echo file_put_contents(&#39;json.txt&#39;, json_encode($arr), true).&#39;<br>&#39;;
echo file_put_contents(&#39;msgpack.txt&#39;, msgpack_pack($arr), true);
?>


Nach der Erstellung

implode.txt wird 92 Bytes generiert
serialize.txt 165 Bytes
json.txt 223 Bytes
msgpack.txt 121 Bytes

Erzeugte Zeichenfolgengröße Die Reihenfolge lautet wie folgt: implode < msgpack_pack <

Zum Beispiel:

$arr = array(&#39;一&#39;,&#39;二&#39;,&#39;三&#39;,&#39;四&#39;,&#39;五&#39;,&#39;六&#39;,&#39;七&#39;,&#39;八&#39;,&#39;九&#39;,&#39;十&#39;);
serialize ist 147 Bytes

json_encode ist 91 Bytes

Vergleichen Sie die Leistung von implode, serialize, json_encode, msgpack_pack

<?php
$arr = array(
    &#39;content1&#39; => &#39;一二三四五六七八九十&#39;,
    &#39;content2&#39; => &#39;一二三四五六七八九十&#39;,
    &#39;content3&#39; => &#39;一二三四五六七八九十&#39;
);
$start = microtime(true);
$i = 1000000;
while($i>0){
    // 分别测试运行时间及内存使用情况
    $tmp = implode(&#39;,&#39;,$arr);
    // $tmp = serialize($arr);
    // $tmp = json_encode($arr);
    // $tmp = msgpack_pack($arr);
    $i--;
}
$end = microtime(true);
echo &#39;run time:&#39;.($end-$start).&#39;s<br>&#39;;
echo &#39;memory usage:&#39;.(memory_get_usage()/1024).&#39;KB&#39;;
?>
implode       1.3225722312927s    628.50KB
serialize     2.0553789138794s    628.32KB
json_encode   2.5058920383453s    628.34KB
msgpack_pack  1.6431028842926s    628.24KB

Ergebnis: Die Speichernutzung beträgt ähnlich, Laufzeitimplode < msgpack_pack < serialize < unserialize, json_decode, msgpack_unpack Leistung

<?php
$data = file_get_contents(&#39;implode.txt&#39;);
//$data = file_get_contents(&#39;serialize.txt&#39;);
//$data = file_get_contents(&#39;json.txt&#39;);
//$data = file_get_contents(&#39;msgpack.txt&#39;);
$start = microtime(true);
$i = 1000000;
while($i>0){
    $tmp = explode(&#39;,&#39;,$data);
    //$tmp = unserialize($data);
    //$tmp = json_decode($data, true);
    //$tmp = msgpack_unpack($data);
    $i--;
}
$end = microtime(true);
echo &#39;run time:&#39;.($end-$start).&#39;s<br>&#39;;
echo &#39;memory usage:&#39;.(memory_get_usage()/1024).&#39;KB&#39;;
?>
rrreeErgebnis: Speichernutzung ist ähnlich, Laufzeitexplodieren < msgpack_unpack <

Zusammenfassend lässt sich sagen, dass Serialisierung, JSON und Msgpack häufig verwendet werden, da Implodieren/Explodieren nicht für die Verwendung komplexer Strukturen geeignet ist. Unter den drei Vergleichen ist msgpack in Bezug auf Laufgeschwindigkeit, Speichernutzung und Speicherplatznutzung der optimale, gefolgt von serialize und schließlich json.

Wenn möglich, wird empfohlen, msgpack zu verwenden, um die Daten zu serialisieren .

Über msgpack können Sie den Artikel lesen, den ich zuvor geschrieben habe: „MessagePack Serialization Format“

In diesem Artikel geht es um die Implodierung/Explosion von PHP , serialize, json , msgpack, um die Leistung zu vergleichen. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen: Erklärung der Ersetzungsmethode php str_replace für bestimmte Zeiten

Anleitung zur Verwendung von header, headers_sent, headers_list, header_remove

Lösung zum Ändern des Ganzzahltyps des von MySQL über PDO zurückgegebenen Felds in den String-Typ

Das obige ist der detaillierte Inhalt vonEine Erklärung der Leistung zwischen PHP implode/explode, serialize, json und msgpack. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn