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