Skip to content

パフォーマンスベンチマーク

Office Oxide は、11 の独立した公開テストスイート — LibreOffice Core、Apache POI、Open XML SDK、ClosedXML、Pandoc、python-docx/python-pptx、Apache Tika、calamine、openpreserve、oletools、LibreOffice legacy コーパス — から取った 6,062 ファイル でベンチマークされています。

方法論: シングルスレッド、LTO 付き release ビルド、ウォームディスクキャッシュ(定常状態)、idle システムでの 3 回の中央値。

DOCX — 2,538 ファイル

ライブラリ 言語 平均 p99 通過率 ライセンス
office_oxide Rust 0.8 ms 3.9 ms 98.9% MIT
python-docx Python 11.8 ms 98 ms 95.1% MIT

Office Oxide は python-docx より平均で 14 倍高速、p99 で 25 倍高速。通過率は 3.8 ポイント高い。

XLSX — 1,802 ファイル

ライブラリ 言語 平均 p99 通過率 ライセンス
office_oxide Rust 5.0 ms 40 ms 97.8% MIT
python-calamine Rust/Python 13.9 ms 183 ms 96.6% MIT
openpyxl Python 94.5 ms 698 ms 96.2% MIT

Office Oxide は calamine より 2.8 倍高速(次に高速な XLSX ライブラリ)、openpyxl より 18 倍高速。3 つの中で最高の通過率。

PPTX — 806 ファイル

ライブラリ 言語 平均 p99 通過率 ライセンス
office_oxide Rust 0.7 ms 3.9 ms 98.4% MIT
python-pptx Python 32.5 ms 174 ms 86.7% MIT

Office Oxide は python-pptx より 46 倍高速、通過率は 11.7 ポイント高い。python-pptx は予期されたスキーマから外れる PowerPoint ファイルで苦労します。office_oxide はそれらを透過的に処理します。

レガシーフォーマット — 916 ファイル

JVM(Apache Tika)や外部バイナリ(catdoc、antiword)なしで .doc.xlsそして .ppt を読める他の Rust または Python ライブラリは存在しません。

.doc — 246 ファイル

ライブラリ 平均 p99 通過率 ライセンス
office_oxide 0.3 ms 3.4 ms 94.7% MIT
catdoc 4.3 ms 41 ms 90.2% GPL-2.0
antiword 4.5 ms 66 ms 76.8% GPL-2.0

.xls — 494 ファイル

ライブラリ 平均 p99 通過率 ライセンス
office_oxide 2.8 ms 75 ms 99.2% MIT
xls2csv (catdoc) 6.9 ms 58 ms 84.0% GPL-2.0
python-calamine 9.0 ms 96 ms 90.7% MIT
xlrd 36.6 ms 503 ms 93.1% BSD-3

xls2csv は p99 が狭い(58 ms 対 75 ms)。複雑なシートで切り詰めた/損失のある出力を出すからです。Office Oxide は平均で 2.4 倍高速で、コーパスを 15 ポイント多く通過します。

.ppt — 176 ファイル

ライブラリ 平均 p99 通過率 ライセンス
office_oxide 0.7 ms 6.6 ms 100% MIT
catppt (catdoc) 2.8 ms 8 ms 77.8% GPL-2.0

通過率 — 6,062 ファイル全体で 98.4%

97 件の非通過ファイルはすべて無効な入力です:

カテゴリ 件数
無効な ZIP / CFB アーカイブ 43 切り詰め、EOCD 欠落、CFB マジック不正
必須パーツの欠落 21 暗号化、パスワード保護、または stream 欠落
不正な XML 18 XML 爆弾、不正な形式のタグ、ファズ破壊コンテンツ
無効な CFB ヘッダ 15 WordPerfect / IBM DisplayWrite / Excel 3/4 を .doc/.xls 偽装、CVE-exploit fixtures

正規の Word 97+ / Excel 97+ / PowerPoint 97+ ファイルでゼロ失敗。有効なドキュメントでゼロ panic、ゼロタイムアウト、ゼロ false negative。

コーパス

ソース ファイル ライセンス
LibreOffice Core 2,185 MPL-2.0
Apache POI 1,298 Apache-2.0
Open XML SDK 707 MIT
ClosedXML 371 MIT
Pandoc 224 GPL-2.0
python-docx + python-pptx 111 MIT
Apache Tika 108 Apache-2.0
calamine 28 MIT
openpreserve 20 CC0
oletools 17 BSD-2
LibreOffice (legacy) 12 MPL-2.0
合計 6,062

再現可能なベンチマークは bench_rust/bench_python.py にあります。完全な方法論とファイルごとの内訳は BENCHMARKS.md を参照。

関連項目