- データ解析とシリアライズの境界を取り払うために開発されたゼロコピーのバイナリ直列化フォーマット
- 単一の連続バッファ内でB木構造でデータをエンコードし、任意フィールドへのアクセスと変更が
O(log n) 時間で可能
- メモリフォーマット自体が転送フォーマットとして動作し、別途パースや再シリアライズの工程なしに即座に送受信可能
- 受信直後のキー検索、値の変更、送信までをすべてメモリコピー(
memcpy)だけで処理
- **スキーマレス(self-describing)**構造で、IDLやスキーマ定義なしに利用可能
- JSONとの相互変換をサポートし、既存API・データセットとの互換性を確保
- デバッグやメッセージ検査時にJSON形式で出力可能
- 性能重視の設計
- キャッシュフレンドリーなB木構造と9.3 kBの最小C実装で構成
- SIMDを使う最速クラスのJSONライブラリ比で最大120倍、Google Flatbuffers比で最大242倍高速
- 世界最速クラスのスキーマレスデータフォーマットの1つ
- 技術的特徴
- ゼロコピー読み書きをサポートし、すべてのI/O演算は
O(log n) の計算量
- ポインタ検証とランタイム型安全性を内蔵
- malloc()を使わず、呼び出し側がバッファを直接提供
- 予測可能なレイテンシと低いメモリ使用量
- **C11(GNU C構文)**ベースで、外部依存なし
- オプションでyyjsonをサブ依存として使い、JSON変換をサポート
- API構成
- Buffer API: ユーザー提供バッファベースで、メモリ制御を最大化
- Context API: メモリ管理を抽象化し、シンプルなインターフェースを提供
- 比較とベンチマーク結果
- JSON、BSON、MessagePackなどのテキストフォーマットに対して圧倒的な処理速度
- Cap’n Proto、Flatbuffersなどのバイナリフォーマットより高い柔軟性と更新容易性を提供
- 実際のTwitter APIデータ、Kostya JSON、C++シリアライズベンチマークなどで最上位の性能を記録
- セキュリティ設計
- オーバーフロー保護の境界チェック、世代別ポインタマクロ、再帰制限、ランタイム型検証を含む
- 信頼できない入力データの処理に適した構造
- 活用コンテキスト
- 高性能ネットワークメッセージング、リアルタイムデータ処理、組み込み環境などでCPU効率を最大化
- Cインターフェースベースのシステムで即座に適用可能
- ライセンスと拡張性
- MITライセンスで公開された独立したC実装
- 今後は言語バインディング、圧縮ベンチマーク、公式仕様書の作成などのロードマップあり
- 起源と背景
- 2024年に発表された Lite² 論文で提案された概念を基にした、独立再実装プロジェクト
- 名前の Lite³ は Lite² よりさらに軽いことを意味する
まだコメントはありません。