ホームページ >バックエンド開発 >PHPチュートリアル >PHP5.5の3つのシリアル化性能比較_PHPチュートリアル

PHP5.5の3つのシリアル化性能比較_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:11:03933ブラウズ

PHP5.5の3つのシリアル化パフォーマンスの比較

json_encode、serialize、igbinary の 3 つのシリアル化メソッドは以前にテストされています。このテストは PHP5.5 に基づいており、テスト ケースは
http://blog です。 csdn.net/hguisu/article/details/7651730
も同じですが、このテストは自宅での igbinary Serialize のテストに基づいています。比較のために、
http://www.ooso.net/archives/ を参照してください。 538

動作環境
PHP5.5 メモリ 16G 8コア 2.0GMHz

パフォーマンスとスペースサイズリスト

小規模配列のテスト結果を使用

すごい

比較しやすい以前の PHP5 での .3 のテスト結果は以下にあります (igbinary はこれまでテストされていません)

json :156
serialize :222
igbinary_serialize :123
json_encode :0.02264404296875
json_decode :0.052916049957275
serialize :0.031183004379272
unserialize :0.029985904693604
Igbinary Serialize: 0.024919986724854
Igbinary unSerialize: 0.019716024398804

大規模な配列のテスト結果を使用する

json :156
serialize :222
json_encode :0.1087498664856
json_decode :0.12652111053467
serialize :0.041656017303467
unserialize :0.040987968444824

以下は以前の結果です (igbinary はテストされていません)前)

json :5350
serialize :8590
igbinary_serialize :2432
json_encode :0.92639899253845
json_decode :1.8222811222076
serialize :1.3030271530151
unserialize :1.1492691040039
Igbinary Serialize: 0.95630598068237
Igbinary unSerialize: 0.82603001594543

概要:
データ:
1: PHP5.5 にアップグレードした後、json、serialize、igbinary でシリアル化した後、サイズは変わっていません。これは、これら 3 つの形式のオブジェクト構造が変化していることを示しています。変更されていないため、シームレスにアップグレードできます。
2: スペース使用量の点では、igbinary にはスペースを節約するという明らかな利点があります。たとえば、5.4k データの json 配列では、serialize メソッドでは 8.6k 必要ですが、igbinary メソッドを使用すると、必要なスペースは 2.4k だけになります。シリアル化メソッドのほぼ 1/4。
パフォーマンス
1: 少量のデータを処理する場合、JSON およびネイティブ シリアライズのパフォーマンスは PHP5.3 バージョンと比較して向上しますが、大量のデータを処理する場合はパフォーマンスが低下します。
2: シリアル化に関しては、json_encode が最も優れたパフォーマンスを示し、次に igbinary が最も悪いですが、ネイティブ シリアル化のパフォーマンス消費量は、json と igbinary の約 1.4 倍です。逆シリアル化に関して言えば、igbinary はシリアル化プロセスよりも高速で、もちろん最速ですが、この速度にはコストもかかります。最後の注記を参照してください。
4: 全体的なパフォーマンスの比較。全体的なパフォーマンスはシリアル化と逆シリアル化の合計です。単純に比較すると、json が最も悪く、次にネイティブ シリアル化が続き、最も良いのは ibinary です。

一般的に言えば、シリアル化パフォーマンスとスペース使用量の観点からは、igbinary が最良の選択です。ただし、igbinary の使用にはコストがかかります。igbinary_unserialize を呼び出すときに不正なデータを渡すと、PHP プロセス全体が停止することがわかりました。ログ

json :5350
serialize :8590
json_encode :0.90479207038879
json_decode :1.753741979599
serialize :1.3566699028015
unserialize :1.3003630638123
は、パフォーマンスを向上させるために、igbinary が関連する形式の検証を実行しなかったと推定しています。アンシリアル化すると、プロセス全体が異常終了します。 Redis を使用するときは、パフォーマンスを向上させ、Redis 領域の無駄を減らすために、最初はシリアル化に SERIALIZE_PHP メソッドを使用しました。切り替え時に誤ってこのピットを踏んでしまい、サーバーが応答してしまいました。エラー、直接 502。幸いなことに、日常環境は優れています。

http://www.bkjia.com/PHPjc/931650.html

tru​​ehttp://www.bkjia.com/PHPjc/931650.html技術記事 PHP5.5 の 3 つのシリアル化パフォーマンスを、json_encode、serialize、igbinary の 3 つのシリアル化メソッドと比較する これまでに関連するテストがありました。このテストはまだありません...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。