Skip to content

Benchmarks de rendimiento

Office Oxide se benchmarca sobre 6.062 archivos sacados de 11 conjuntos de test públicos independientes — LibreOffice Core, Apache POI, Open XML SDK, ClosedXML, Pandoc, python-docx/python-pptx, Apache Tika, calamine, openpreserve, oletools y el corpus heredado de LibreOffice.

Metodología: single-thread, build de release con LTO, caché de disco templada (steady-state), mediana de tres ejecuciones en un sistema ocioso.

DOCX — 2.538 archivos

Librería Lenguaje Media p99 Tasa de éxito Licencia
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 es 14× más rápido que python-docx en la media y 25× más rápido en la cola (p99). Tasa de éxito 3,8 puntos porcentuales más alta.

XLSX — 1.802 archivos

Librería Lenguaje Media p99 Tasa de éxito Licencia
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 es 2,8× más rápido que calamine (la siguiente librería XLSX más rápida) y 18× más rápido que openpyxl. También con la mayor tasa de éxito de los tres.

PPTX — 806 archivos

Librería Lenguaje Media p99 Tasa de éxito Licencia
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 es 46× más rápido que python-pptx, con tasa de éxito 11,7 puntos porcentuales mayor. python-pptx tropieza con archivos PowerPoint que se desvían de su schema esperado; office_oxide los gestiona de forma transparente.

Formatos heredados — 916 archivos

Ninguna otra librería en Rust o Python lee .doc, .xls y .ppt sin JVM (Apache Tika) o binarios externos (catdoc, antiword).

.doc — 246 archivos

Librería Media p99 Tasa de éxito Licencia
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 archivos

Librería Media p99 Tasa de éxito Licencia
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 tiene un p99 más ajustado (58 ms vs 75 ms) porque emite salida truncada/con pérdida en hojas complejas. Office Oxide es 2,4× más rápido en la media y pasa 15 puntos porcentuales más del corpus.

.ppt — 176 archivos

Librería Media p99 Tasa de éxito Licencia
office_oxide 0,7 ms 6,6 ms 100% MIT
catppt (catdoc) 2,8 ms 8 ms 77,8% GPL-2.0

Tasa de éxito — 98,4% sobre 6.062 archivos

Los 97 archivos no superados son todos entradas inválidas:

Categoría Cantidad Notas
ZIP / CFB inválido 43 Truncados, sin EOCD, magic CFB malo
Falta parte obligatoria 21 Cifrados, con contraseña o sin stream
XML malformado 18 XML bombs, etiquetas ill-formed, contenido corrompido por fuzz
Header CFB inválido 15 WordPerfect / IBM DisplayWrite / Excel 3/4 mal nombrados como .doc/.xls, fixtures de CVE

Cero fallos en archivos legítimos Word 97+ / Excel 97+ / PowerPoint 97+. Cero panics, cero timeouts, cero falsos negativos en documentos válidos.

Corpus

Fuente Archivos Licencia
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 (heredado) 12 MPL-2.0
Total 6.062

Benchmarks reproducibles en bench_rust/ y bench_python.py. Metodología completa y desglose por archivo en BENCHMARKS.md.

Véase también