Skip to content

Performance-Benchmarks

Office Oxide wird auf 6.062 Dateien aus 11 unabhängigen öffentlichen Test-Suites gebenchmarkt — LibreOffice Core, Apache POI, Open XML SDK, ClosedXML, Pandoc, python-docx/python-pptx, Apache Tika, calamine, openpreserve, oletools und LibreOffice-Legacy-Korpus.

Methodik: Single-Thread, Release-Build mit LTO, warmer Disk-Cache (Steady State), Median aus drei Läufen auf einem unbeschäftigten System.

DOCX — 2.538 Dateien

Library Sprache Mittelwert p99 Pass-Rate Lizenz
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 ist im Mittel 14× schneller als python-docx und am Tail (p99) 25× schneller. Pass-Rate liegt 3,8 Prozentpunkte höher.

XLSX — 1.802 Dateien

Library Sprache Mittelwert p99 Pass-Rate Lizenz
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 ist 2,8× schneller als calamine (die nächstschnellste XLSX-Library) und 18× schneller als openpyxl. Auch die höchste Pass-Rate der drei.

PPTX — 806 Dateien

Library Sprache Mittelwert p99 Pass-Rate Lizenz
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 ist 46× schneller als python-pptx, Pass-Rate 11,7 Prozentpunkte höher. python-pptx straucheln bei PowerPoint-Dateien, die vom erwarteten Schema abweichen; office_oxide handhabt sie transparent.

Legacy-Formate — 916 Dateien

Keine andere Rust- oder Python-Library liest .doc, .xls und .ppt ohne JVM (Apache Tika) oder externe Binaries (catdoc, antiword).

.doc — 246 Dateien

Library Mittelwert p99 Pass-Rate Lizenz
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 Dateien

Library Mittelwert p99 Pass-Rate Lizenz
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 hat einen engeren p99 (58 ms vs 75 ms), weil es bei komplexen Sheets abgeschnittenen / verlustbehafteten Output liefert. Office Oxide ist im Mittel 2,4× schneller und besteht 15 Prozentpunkte mehr des Korpus.

.ppt — 176 Dateien

Library Mittelwert p99 Pass-Rate Lizenz
office_oxide 0,7 ms 6,6 ms 100 % MIT
catppt (catdoc) 2,8 ms 8 ms 77,8 % GPL-2.0

Pass-Rate — 98,4 % über 6.062 Dateien

Die 97 nicht bestandenen Dateien sind allesamt invalide Inputs:

Kategorie Anzahl Anmerkungen
Ungültiges ZIP / CFB-Archiv 43 Abgeschnitten, kein EOCD, schlechtes CFB-Magic
Pflicht-Teil fehlt 21 Verschlüsselt, passwortgeschützt oder Stream fehlt
Malformed XML 18 XML-Bombs, ill-formed Tags, fuzz-korrupter Content
Ungültiger CFB-Header 15 WordPerfect / IBM DisplayWrite / Excel 3/4, falsch als .doc/.xls benannt, CVE-Exploit-Fixtures

Null Fails bei legitimen Word 97+ / Excel 97+ / PowerPoint 97+ Dateien. Null Panics, null Timeouts, null False Negatives bei validen Dokumenten.

Korpus

Quelle Dateien Lizenz
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
Gesamt 6.062

Reproduzierbare Benchmarks unter bench_rust/ und bench_python.py. Vollständige Methodik und per-Datei-Aufschlüsselung in BENCHMARKS.md.

Siehe auch