HOME IP Messenger FastCopy Tech-memo Diary 作者Twitter [English]

個人的なシリアライザの特徴表(作成中)

白水啓章
作成 2019/07/28

概要

個人的なシリアライザの特徴表です。

目的

シリアライザの比較で「速度」や「サイズ」といったベンチマーク的なものを見かけることがあります。
しかしシステムに採用する際はそれだけでなく、下記のような複数の基準でトレードオフを判断することが多いと思いますので、その参考用の表を作っておきます。
(まだ足りていない大事な視点があるかも。ご一報いただけると助かります。
https://twitter.com/shirouzu/status/1158303979970822144

  1. IDL/スキーマを使うか
    ・IDLなし=お手軽に使えます。
    ・IDLあり=共通スキーマを正確に定義でき、特に複数のプログラムで交換する時に助かります。
  2. リリース後の仕様追加/変更の柔軟さ
    多用されるソフトの場合、リリース後に仕様追加が無いことは稀です。
    多くはそれなりに変更に耐えますが、一切変更を許さないものも稀にあります。(XDR)。
    また利用機会は多くありませんが、要素名の変更不可(msgpack)や、要素削除の一部不可(protobuf2 required)もあります。
  3. 安全性
    ・型検査をどのレイヤーでだれが担保しているか。
    ・プリミティブ単位の検査か、全てのデータ構造を検査しているか
  4. 性能
    ・エンコード後のサイズ
    ・エンコード/デコードのそれぞれの速度
  5. ワイヤーフォーマット
    ・型情報が含まれているか
    ・要素名が含まれているか
    ・読みやすさ(通信データでは生である程度読みたい場合も)
    ・エンディアンをどこで吸収しているか(and 高効率なエンディアンタイプがあるか)
  6. その他 ・サポートしてる言語(メジャーなものは概ね存在)
    ・表現不能なパターンがある場合、その回避法
    ・サイズ制限があるか(2GB or 4GBのものが多い)

特徴表(作成中)

googleスプレッドシート