Skip to content

Бенчмарки производительности

Office Oxide бенчмаркается на 6 062 файлах, собранных из 11 независимых публичных тестовых наборов — LibreOffice Core, Apache POI, Open XML SDK, ClosedXML, Pandoc, python-docx/python-pptx, Apache Tika, calamine, openpreserve, oletools и LibreOffice legacy corpus.

Методика: один поток, release-сборка с LTO, тёплый дисковый кеш (steady-state), медиана из трёх запусков на idle-системе.

DOCX — 2 538 файлов

Библиотека Язык Среднее p99 Pass rate Лицензия
office_oxide Rust 0,8 мс 3,9 мс 98,9% MIT
python-docx Python 11,8 мс 98 мс 95,1% MIT

Office Oxide в 14 раз быстрее python-docx по среднему и в 25 раз быстрее на хвосте (p99). Pass rate выше на 3,8 п. п.

XLSX — 1 802 файла

Библиотека Язык Среднее p99 Pass rate Лицензия
office_oxide Rust 5,0 мс 40 мс 97,8% MIT
python-calamine Rust/Python 13,9 мс 183 мс 96,6% MIT
openpyxl Python 94,5 мс 698 мс 96,2% MIT

Office Oxide в 2,8 раза быстрее calamine (следующая по скорости XLSX-библиотека) и в 18 раз быстрее openpyxl. И самый высокий pass rate из трёх.

PPTX — 806 файлов

Библиотека Язык Среднее p99 Pass rate Лицензия
office_oxide Rust 0,7 мс 3,9 мс 98,4% MIT
python-pptx Python 32,5 мс 174 мс 86,7% MIT

Office Oxide в 46 раз быстрее python-pptx, pass rate выше на 11,7 п. п. python-pptx плохо переваривает PowerPoint-файлы, отклоняющиеся от ожидаемой схемы; office_oxide справляется прозрачно.

Legacy-форматы — 916 файлов

Никакая другая Rust/Python-библиотека не читает .doc, .xls и .ppt без JVM (Apache Tika) или внешних бинарей (catdoc, antiword).

.doc — 246 файлов

Библиотека Среднее p99 Pass rate Лицензия
office_oxide 0,3 мс 3,4 мс 94,7% MIT
catdoc 4,3 мс 41 мс 90,2% GPL-2.0
antiword 4,5 мс 66 мс 76,8% GPL-2.0

.xls — 494 файла

Библиотека Среднее p99 Pass rate Лицензия
office_oxide 2,8 мс 75 мс 99,2% MIT
xls2csv (catdoc) 6,9 мс 58 мс 84,0% GPL-2.0
python-calamine 9,0 мс 96 мс 90,7% MIT
xlrd 36,6 мс 503 мс 93,1% BSD-3

У xls2csv p99 теснее (58 мс против 75 мс), потому что он отдаёт усечённый/lossy-вывод на сложных листах. Office Oxide в 2,4 раза быстрее по среднему и пропускает на 15 п. п. больше корпуса.

.ppt — 176 файлов

Библиотека Среднее p99 Pass rate Лицензия
office_oxide 0,7 мс 6,6 мс 100% MIT
catppt (catdoc) 2,8 мс 8 мс 77,8% GPL-2.0

Pass rate — 98,4% по 6 062 файлам

97 непрошедших файлов — все невалидные входы:

Категория Количество Заметки
Невалидный ZIP / CFB-архив 43 Усечения, отсутствует EOCD, плохой CFB magic
Отсутствует обязательная часть 21 Зашифровано, под паролем или нет stream
Поломанный XML 18 XML-бомбы, ill-formed-теги, fuzz-corrupt контент
Невалидный CFB-заголовок 15 WordPerfect / IBM DisplayWrite / Excel 3/4, обозванные как .doc/.xls, CVE-эксплойт-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.

Смотрите также