この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 26039|答える: 2

[出典] .net/c# Xml、JSON、ヘッシアン、プロトコルバッファのシリアライズ比較

[リンクをコピー]
掲載地 2018/04/13 13:23:31 | | | |
簡単な紹介

このブログでは主に、Xml、Json、ヘッシアン、プロトコルバッファのシリアライズとデシリアライズのパフォーマンスを比較し、XmlとJsonの基本的な概念は除外しています。
Hessian:Hessianは軽量なリモートonhttpツールで、バイナリRPCプロトコルと組み込みのシリアライゼーション機能を用いてRMI機能を提供します。
プロトコルバッファ:Googleからのデータ交換のためのフォーマットで、言語に依存しません。バイナリ形式であるため、XMLよりもはるかに高速で、分散アプリケーション間のデータ通信や異種環境でのデータ交換に使用できます。 効率的かつ互換性のあるバイナリデータ伝送形式として、ネットワーク伝送、設定ファイル、データ保存など多くの分野で使用できます。 GoogleはJava、C++、Pythonの実装を提供し、現在ではインターネット上にはC#などの言語の実装もあります。

シリアライズとデシリアライズ

XML:.Netに付属しているXmlSerializerを使いましょう。
Json:ServiceStack.Textを使っていますが、Newtonsoft.Jsonより性能は良いですが、最速は fastJSON.net が望ましいです。
Hessian:nugetからダウンロードしたHessianCSharpライブラリを使用しています。
プロトコルバッファ:nugetからダウンロードしたprotobuf-netを使用しています。
以下はテストで使用された対象です。

テストマシンで使用されたi7HQ 2.6HZプロセッサ。
こちらがテストの結果です
連載


デシリアライズ


シリアライズ後のバイト長


まずはシリアライズについて話しましょう。ここではそれぞれ100回、1000回、10000回、100000回のテストを行い、座標は完了時間、単位はミリ秒です。10000回以内にテストすると、4種類のシリアライズの時間消費は非常に小さく、すべて200ミリ秒以内に、10000回、10000回になるとすべて増加し始めます。最悪はXml、最も良いのはプロトコルバッファですが、10000回以内の場合は ヘッシアンはプロトコルバッファよりも優れています。
1万回のデシリアライズ内で大きな違いはないのですが、1万回のデシリアライズではHessianの方が時間がかかることがわかり、10万回のデシリアライズではXmlを直接上回ります。これにより、自分のコードに問題があるのではないかと常に思い、最高のパフォーマンスはやはりプロトコルバッファです。
シリアル化されたバイト長はXMLで最も長いのは当然ですが、ファイルには多くの終わりタグ()</Name>が含まれており、Protocol Buffersが依然として最良だからです。

上記のグラフから、プロトコルバッファが最良であるとほぼすぐに結論づけられますが、以下の側面から包括的に評価する必要があると思います。
1. 可読性:XMLとJsonは連続化後のテキストであり、可読性が非常に良好です。例えば、途中にミスがあれば交換されたデータを簡単に確認でき、テストのためにシミュレーションも可能です。 ヘッシアンバッファもプロトコルバッファもバイナリであり、シリアライズ後は内容が読み取れなくなるため、システムのトラブルシューティングに一定の影響を与えます。
2. 多様性:XMLとJSONはすでに古いデータ交換形式であり、これらが一般的なシステム間のデータ交換のための2つの形式です。 ヘッシアンバッファもプロトコルバッファも比較的人気がなく、使用頻度も低いです。
3. 利便性:Hessianは実際には完全なRPCフレームワークです。サーバー側でインターフェースを定義し、それを実装し、インターフェースをクライアントにコピーします。少しコーディングした後、サーバー側をローカルメソッドを呼び出すように呼び出せますが、他の3つのツールでは利用できません。パフォーマンスも悪くありません。





先の:Windowsは.net/c#サービスプログラムをインストールします
次に:ファイルを読み取る際の文字が乱れた場合のStreamReaderソリューション
 地主| 掲載地 2023/08/31 20:57:23 |
MessagePackおよびprotobuf-netのパフォーマンスベンチマーク
https://www.itsvse.com/thread-10655-1-1.html
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com