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-корумпований контент
Невалідний 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.

Дивіться також