Skip to content

Benchmarks de performance

Office Oxide é benchmarkado em 6.062 arquivos vindos de 11 conjuntos de teste públicos independentes — LibreOffice Core, Apache POI, Open XML SDK, ClosedXML, Pandoc, python-docx/python-pptx, Apache Tika, calamine, openpreserve, oletools e o corpus legado do LibreOffice.

Metodologia: single-thread, build de release com LTO, cache de disco aquecido (steady-state), mediana de três rodadas em sistema ocioso.

DOCX — 2.538 arquivos

Biblioteca Linguagem Média p99 Taxa de sucesso Licença
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 é 14× mais rápido que python-docx na média e 25× mais rápido na cauda (p99). Taxa de sucesso 3,8 pontos percentuais maior.

XLSX — 1.802 arquivos

Biblioteca Linguagem Média p99 Taxa de sucesso Licença
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 é 2,8× mais rápido que calamine (a próxima biblioteca XLSX mais rápida) e 18× mais rápido que openpyxl. Também tem a maior taxa de sucesso dos três.

PPTX — 806 arquivos

Biblioteca Linguagem Média p99 Taxa de sucesso Licença
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 é 46× mais rápido que python-pptx, com taxa de sucesso 11,7 pontos percentuais maior. python-pptx tem dificuldade com arquivos PowerPoint que fogem do schema esperado; office_oxide lida com eles de forma transparente.

Formatos legados — 916 arquivos

Nenhuma outra biblioteca em Rust ou Python lê .doc, .xls e .ppt sem JVM (Apache Tika) ou binários externos (catdoc, antiword).

.doc — 246 arquivos

Biblioteca Média p99 Taxa de sucesso Licença
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 arquivos

Biblioteca Média p99 Taxa de sucesso Licença
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 tem p99 mais apertado (58 ms vs 75 ms) porque emite saída truncada/com perdas em planilhas complexas. Office Oxide é 2,4× mais rápido na média e passa 15 pontos percentuais a mais do corpus.

.ppt — 176 arquivos

Biblioteca Média p99 Taxa de sucesso Licença
office_oxide 0,7 ms 6,6 ms 100% MIT
catppt (catdoc) 2,8 ms 8 ms 77,8% GPL-2.0

Taxa de sucesso — 98,4% sobre 6.062 arquivos

Os 97 arquivos não-aprovados são todos entradas inválidas:

Categoria Quantidade Notas
ZIP / CFB inválido 43 Truncados, sem EOCD, magic CFB ruim
Falta parte obrigatória 21 Criptografados, com senha ou stream ausente
XML malformado 18 XML bombs, tags ill-formed, conteúdo corrompido por fuzz
Header CFB inválido 15 WordPerfect / IBM DisplayWrite / Excel 3/4 nomeados como .doc/.xls, fixtures de CVE

Zero falhas em arquivos legítimos Word 97+ / Excel 97+ / PowerPoint 97+. Zero panic, zero timeouts, zero falsos negativos em documentos válidos.

Corpus

Origem Arquivos Licença
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
Total 6.062

Benchmarks reproduzíveis em bench_rust/ e bench_python.py. Metodologia completa e quebra por arquivo em BENCHMARKS.md.

Veja também