WolfXL Rust Competitor Benchmark Run
- Timestamp UTC:
2026-08-16T09:44:03.139211+00:00
- Git branch:
None
- Git commit:
None
- Git dirty:
None
- Python:
3.13.9
- Rounds:
11
| Case |
Engine |
Surface |
Competitor |
Version |
Rows |
Cols |
Median seconds |
Units/sec |
| write_cell_by_cell_plain |
wolfxl_cell |
python_public_api |
wolfxl |
|
2,000 |
5 |
0.011443 |
873,871 |
| write_cell_by_cell_plain |
wolfxl_append |
python_public_api |
wolfxl |
|
2,000 |
5 |
0.004504 |
2,220,166 |
| write_cell_by_cell_plain |
wolfxl_write_rows |
python_public_api |
wolfxl |
|
2,000 |
5 |
0.003729 |
2,681,594 |
| write_cell_by_cell_plain |
wolfxl_write_rows_nocopy |
python_public_api |
wolfxl |
|
2,000 |
5 |
0.003625 |
2,758,938 |
| write_cell_by_cell_plain |
wolfxl_write_rows_fast_plain |
python_public_api |
wolfxl |
|
2,000 |
5 |
0.003091 |
3,235,330 |
| write_formula_cells |
wolfxl_append |
python_public_api |
wolfxl |
|
2,000 |
5 |
0.005132 |
1,948,621 |
| write_formula_cells |
wolfxl_write_rows_fast_formula |
python_public_api |
wolfxl |
|
2,000 |
5 |
0.004102 |
2,437,538 |
| write_unique_strings_plain |
wolfxl_write_rows_fast_unique_strings |
python_public_api |
wolfxl |
|
2,000 |
5 |
0.005247 |
1,905,730 |
| write_styled_cells |
wolfxl_styled |
python_public_api |
wolfxl |
|
2,000 |
5 |
0.023999 |
416,689 |
| write_styled_cells |
wolfxl_write_styled_rows |
python_public_api |
wolfxl |
|
2,000 |
5 |
0.011385 |
878,339 |
| write_styled_cells |
wolfxl_write_styled_rows_grid |
python_public_api |
wolfxl |
|
2,000 |
5 |
0.003919 |
2,551,997 |
| write_multi_sheet_plain |
wolfxl_multi_sheet |
python_public_api |
wolfxl |
|
2,000 |
5 |
0.011073 |
2,709,232 |
| write_multi_sheet_plain |
wolfxl_write_rows_fast_multi_sheet |
python_public_api |
wolfxl |
|
2,000 |
5 |
0.006803 |
4,409,738 |
| write_cell_by_cell_plain |
wolfxl_writer_direct |
direct_rust_api |
wolfxl |
|
2,000 |
5 |
0.002344 |
4,265,984 |
| write_cell_by_cell_plain |
wolfxl_writer_streaming_direct |
direct_rust_api |
wolfxl |
|
2,000 |
5 |
0.002080 |
4,807,115 |
| write_unique_strings_plain |
wolfxl_writer_direct |
direct_rust_api |
wolfxl |
|
2,000 |
5 |
0.003966 |
2,521,379 |
| write_unique_strings_plain |
wolfxl_writer_streaming_direct |
direct_rust_api |
wolfxl |
|
2,000 |
5 |
0.004019 |
2,488,207 |
| write_formula_cells |
wolfxl_writer_direct |
direct_rust_api |
wolfxl |
|
2,000 |
5 |
0.003259 |
3,068,544 |
| write_formula_cells |
wolfxl_writer_streaming_direct |
direct_rust_api |
wolfxl |
|
2,000 |
5 |
0.002553 |
3,916,577 |
| write_styled_cells |
wolfxl_writer_direct |
direct_rust_api |
wolfxl |
|
2,000 |
5 |
0.002653 |
3,769,377 |
| write_styled_cells |
wolfxl_writer_streaming_direct |
direct_rust_api |
wolfxl |
|
2,000 |
5 |
0.002369 |
4,220,374 |
| write_multi_sheet_plain |
wolfxl_writer_direct |
direct_rust_api |
wolfxl |
|
2,000 |
5 |
0.006391 |
4,694,255 |
| write_multi_sheet_plain |
wolfxl_writer_streaming_direct |
direct_rust_api |
wolfxl |
|
2,000 |
5 |
0.005291 |
5,669,604 |
| write_cell_by_cell_plain |
rust_xlsxwriter |
direct_rust_api |
rust_xlsxwriter |
0.96.0 |
2,000 |
5 |
0.004436 |
2,254,220 |
| write_unique_strings_plain |
rust_xlsxwriter |
direct_rust_api |
rust_xlsxwriter |
0.96.0 |
2,000 |
5 |
0.007607 |
1,314,579 |
| write_formula_cells |
rust_xlsxwriter |
direct_rust_api |
rust_xlsxwriter |
0.96.0 |
2,000 |
5 |
0.004940 |
2,024,104 |
| write_styled_cells |
rust_xlsxwriter |
direct_rust_api |
rust_xlsxwriter |
0.96.0 |
2,000 |
5 |
0.005329 |
1,876,378 |
| write_multi_sheet_plain |
rust_xlsxwriter |
direct_rust_api |
rust_xlsxwriter |
0.96.0 |
2,000 |
5 |
0.009961 |
3,011,784 |
| write_cell_by_cell_plain |
xlsxwriter |
direct_rust_api |
xlsxwriter |
0.6.1 |
2,000 |
5 |
0.008079 |
1,237,771 |
| write_unique_strings_plain |
xlsxwriter |
direct_rust_api |
xlsxwriter |
0.6.1 |
2,000 |
5 |
0.013312 |
751,218 |
| write_formula_cells |
xlsxwriter |
direct_rust_api |
xlsxwriter |
0.6.1 |
2,000 |
5 |
0.009205 |
1,086,342 |
| write_styled_cells |
xlsxwriter |
direct_rust_api |
xlsxwriter |
0.6.1 |
2,000 |
5 |
0.009025 |
1,108,079 |
| write_multi_sheet_plain |
xlsxwriter |
direct_rust_api |
xlsxwriter |
0.6.1 |
2,000 |
5 |
0.020533 |
1,461,045 |
| read_values_plain |
wolfxl_value_summary |
python_public_api |
wolfxl |
|
2,000 |
5 |
0.001756 |
5,694,223 |
| read_values_plain |
wolfxl_read_only |
python_public_api |
wolfxl |
|
2,000 |
5 |
0.004081 |
2,450,330 |
| read_values_plain |
wolfxl_read_only_chunks |
python_public_api |
wolfxl |
|
2,000 |
5 |
0.003810 |
2,624,816 |
| read_values_plain |
wolfxl_reader_direct |
direct_rust_api |
wolfxl |
|
2,000 |
5 |
0.001793 |
5,577,764 |
| read_values_plain |
umya-spreadsheet |
direct_rust_api |
umya-spreadsheet |
3.0.1 |
2,000 |
5 |
0.008279 |
1,207,887 |
| write_cell_by_cell_plain |
umya-spreadsheet |
direct_rust_api |
umya-spreadsheet |
3.0.1 |
2,000 |
5 |
0.010499 |
952,430 |
| modify_existing_workbook_plain |
wolfxl_modify |
python_public_api |
wolfxl |
|
2,000 |
5 |
0.007551 |
265 |
| modify_existing_workbook_plain |
wolfxl_modify_internal_phases |
python_public_api |
wolfxl |
|
2,000 |
5 |
0.007519 |
266 |
| modify_existing_workbook_plain |
wolfxl_modify_patcher_only |
python_binding_api |
wolfxl |
|
2,000 |
5 |
0.003260 |
613 |
| modify_existing_workbook_plain |
wolfxl_modify_direct |
direct_rust_api |
wolfxl |
|
2,000 |
5 |
0.001605 |
1,246 |
| modify_existing_workbook_plain |
wolfxl_modify_direct_in_place |
direct_rust_api |
wolfxl |
|
2,000 |
5 |
0.001655 |
1,209 |
| modify_existing_workbook_plain |
umya-spreadsheet |
direct_rust_api |
umya-spreadsheet |
3.0.1 |
2,000 |
5 |
0.016799 |
119 |
| modify_fullrewrite_plain |
wolfxl_modify_fullrewrite_direct |
direct_rust_api |
wolfxl |
|
2,000 |
5 |
0.004518 |
443 |
| modify_fullrewrite_plain |
umya-spreadsheet |
direct_rust_api |
umya-spreadsheet |
3.0.1 |
2,000 |
5 |
0.016306 |
123 |
| modify_fullrewrite_plain |
office_oxide |
direct_rust_api |
office_oxide |
0.1.8 |
2,000 |
5 |
0.008161 |
245 |
| modify_fullrewrite_wide |
wolfxl_modify_fullrewrite_direct |
direct_rust_api |
wolfxl |
|
2,000 |
50 |
0.036782 |
54 |
| modify_fullrewrite_wide |
umya-spreadsheet |
direct_rust_api |
umya-spreadsheet |
3.0.1 |
2,000 |
50 |
0.139207 |
14 |
| modify_fullrewrite_wide |
office_oxide |
direct_rust_api |
office_oxide |
0.1.8 |
2,000 |
50 |
0.065998 |
30 |
| modify_fullrewrite_large |
wolfxl_modify_fullrewrite_direct |
direct_rust_api |
wolfxl |
|
20,000 |
5 |
0.041432 |
48 |
| modify_fullrewrite_large |
umya-spreadsheet |
direct_rust_api |
umya-spreadsheet |
3.0.1 |
20,000 |
5 |
0.157092 |
13 |
| modify_fullrewrite_large |
office_oxide |
direct_rust_api |
office_oxide |
0.1.8 |
20,000 |
5 |
0.075978 |
26 |
| read_values_plain |
calamine |
direct_rust_api |
calamine |
0.36.1 |
2,000 |
5 |
0.002090 |
4,783,924 |
| read_formula_text |
wolfxl_formula_summary |
python_public_api |
wolfxl |
|
2,000 |
5 |
0.001721 |
2,324,118 |
| read_formula_text |
wolfxl |
python_public_api |
wolfxl |
|
2,000 |
5 |
0.006734 |
593,968 |
| read_formula_text |
wolfxl_reader_direct |
direct_rust_api |
wolfxl |
|
2,000 |
5 |
0.001769 |
2,261,324 |
| read_formula_text |
calamine |
direct_rust_api |
calamine |
0.36.1 |
2,000 |
5 |
0.003854 |
1,037,827 |
| read_values_plain |
fastexcel |
python_binding_api |
fastexcel |
0.20.2 |
2,000 |
5 |
0.003225 |
3,100,775 |
| read_values_plain |
python_calamine |
python_binding_api |
python-calamine |
0.8.2 |
2,000 |
5 |
0.004088 |
2,446,060 |
| write_cell_by_cell_plain |
office_oxide |
direct_rust_api |
office_oxide |
0.1.8 |
2,000 |
5 |
0.004766 |
2,097,975 |
| read_values_plain |
office_oxide |
direct_rust_api |
office_oxide |
0.1.8 |
2,000 |
5 |
0.002956 |
3,383,188 |
| modify_existing_workbook_plain |
office_oxide |
direct_rust_api |
office_oxide |
0.1.8 |
2,000 |
5 |
0.003490 |
573 |
Speedup >1.0x means WolfXL is faster than the competitor.
| Case |
Competitor |
Surface pair |
Speedup vs competitor |
| modify_existing_workbook_plain |
office_oxide |
python_public_api -> direct_rust_api |
0.46x |
| modify_existing_workbook_plain |
umya-spreadsheet |
python_public_api -> direct_rust_api |
2.22x |
| read_formula_text |
calamine |
python_public_api -> direct_rust_api |
2.24x |
| read_values_plain |
calamine |
python_public_api -> direct_rust_api |
1.19x |
| read_values_plain |
fastexcel |
python_public_api -> python_binding_api |
1.84x |
| read_values_plain |
office_oxide |
python_public_api -> direct_rust_api |
1.68x |
| read_values_plain |
python-calamine |
python_public_api -> python_binding_api |
2.33x |
| read_values_plain |
umya-spreadsheet |
python_public_api -> direct_rust_api |
4.71x |
| write_cell_by_cell_plain |
office_oxide |
python_public_api -> direct_rust_api |
1.54x |
| write_cell_by_cell_plain |
rust_xlsxwriter |
python_public_api -> direct_rust_api |
1.44x |
| write_cell_by_cell_plain |
umya-spreadsheet |
python_public_api -> direct_rust_api |
3.40x |
| write_cell_by_cell_plain |
xlsxwriter |
python_public_api -> direct_rust_api |
2.61x |
| write_formula_cells |
rust_xlsxwriter |
python_public_api -> direct_rust_api |
1.20x |
| write_formula_cells |
xlsxwriter |
python_public_api -> direct_rust_api |
2.24x |
| write_multi_sheet_plain |
rust_xlsxwriter |
python_public_api -> direct_rust_api |
1.46x |
| write_multi_sheet_plain |
xlsxwriter |
python_public_api -> direct_rust_api |
3.02x |
| write_styled_cells |
rust_xlsxwriter |
python_public_api -> direct_rust_api |
1.36x |
| write_styled_cells |
xlsxwriter |
python_public_api -> direct_rust_api |
2.30x |
| write_unique_strings_plain |
rust_xlsxwriter |
python_public_api -> direct_rust_api |
1.45x |
| write_unique_strings_plain |
xlsxwriter |
python_public_api -> direct_rust_api |
2.54x |
Memory ratio <1.0x means WolfXL used less peak RSS than the competitor.
| Case |
Competitor |
Surface pair |
Peak RSS ratio vs competitor |
Peak RSS excess bytes |
| modify_existing_workbook_plain |
office_oxide |
python_public_api -> direct_rust_api |
10.87x |
58867712 |
| modify_existing_workbook_plain |
umya-spreadsheet |
python_public_api -> direct_rust_api |
4.24x |
49545216 |
| read_formula_text |
calamine |
python_public_api -> direct_rust_api |
17.27x |
53051392 |
| read_values_plain |
calamine |
python_public_api -> direct_rust_api |
17.10x |
52477952 |
| read_values_plain |
fastexcel |
python_public_api -> python_binding_api |
0.71x |
-22708224 |
| read_values_plain |
office_oxide |
python_public_api -> direct_rust_api |
11.90x |
51052544 |
| read_values_plain |
python-calamine |
python_public_api -> python_binding_api |
0.99x |
-458752 |
| read_values_plain |
umya-spreadsheet |
python_public_api -> direct_rust_api |
4.30x |
42762240 |
| write_cell_by_cell_plain |
office_oxide |
python_public_api -> direct_rust_api |
12.90x |
54804480 |
| write_cell_by_cell_plain |
rust_xlsxwriter |
python_public_api -> direct_rust_api |
10.39x |
53690368 |
| write_cell_by_cell_plain |
umya-spreadsheet |
python_public_api -> direct_rust_api |
4.43x |
46006272 |
| write_cell_by_cell_plain |
xlsxwriter |
python_public_api -> direct_rust_api |
6.95x |
50855936 |
| write_formula_cells |
rust_xlsxwriter |
python_public_api -> direct_rust_api |
9.87x |
53772288 |
| write_formula_cells |
xlsxwriter |
python_public_api -> direct_rust_api |
6.96x |
51232768 |
| write_multi_sheet_plain |
rust_xlsxwriter |
python_public_api -> direct_rust_api |
5.61x |
51953664 |
| write_multi_sheet_plain |
xlsxwriter |
python_public_api -> direct_rust_api |
5.50x |
51740672 |
| write_styled_cells |
rust_xlsxwriter |
python_public_api -> direct_rust_api |
10.39x |
54181888 |
| write_styled_cells |
xlsxwriter |
python_public_api -> direct_rust_api |
6.98x |
51363840 |
| write_unique_strings_plain |
rust_xlsxwriter |
python_public_api -> direct_rust_api |
9.01x |
54476800 |
| write_unique_strings_plain |
xlsxwriter |
python_public_api -> direct_rust_api |
6.55x |
51920896 |
Phase Diagnostics
| Case |
Engine |
Phase |
Median seconds |
| write_cell_by_cell_plain |
wolfxl_cell |
construct_loop |
0.007671 |
| write_cell_by_cell_plain |
wolfxl_cell |
save_flush |
0.003409 |
| write_styled_cells |
wolfxl_styled |
populate_cells |
0.013145 |
| write_styled_cells |
wolfxl_styled |
save |
0.010601 |
| write_styled_cells |
wolfxl_write_styled_rows |
populate_cells |
0.007661 |
| write_styled_cells |
wolfxl_write_styled_rows |
save |
0.003452 |
| write_styled_cells |
wolfxl_write_styled_rows_grid |
populate_cells |
0.000413 |
| write_styled_cells |
wolfxl_write_styled_rows_grid |
save |
0.003289 |
| read_values_plain |
wolfxl_read_only |
iterate_values |
0.002741 |
| read_values_plain |
wolfxl_read_only |
open_workbook |
0.001318 |
| read_values_plain |
wolfxl_read_only_chunks |
iterate_values |
0.002423 |
| read_values_plain |
wolfxl_read_only_chunks |
open_workbook |
0.001318 |
| modify_existing_workbook_plain |
wolfxl_modify |
modify_save |
0.007551 |
| modify_existing_workbook_plain |
wolfxl_modify |
setup_copy |
0.000220 |
| modify_existing_workbook_plain |
wolfxl_modify |
verify_load |
0.047073 |
| modify_existing_workbook_plain |
wolfxl_modify_internal_phases |
assign_cells |
0.000008 |
| modify_existing_workbook_plain |
wolfxl_modify_internal_phases |
close |
0.000107 |
| modify_existing_workbook_plain |
wolfxl_modify_internal_phases |
load_workbook_modify |
0.001802 |
| modify_existing_workbook_plain |
wolfxl_modify_internal_phases |
modify_save_total |
0.007519 |
| modify_existing_workbook_plain |
wolfxl_modify_internal_phases |
save |
0.005555 |
| modify_existing_workbook_plain |
wolfxl_modify_internal_phases |
setup_copy |
0.000189 |
| modify_existing_workbook_plain |
wolfxl_modify_internal_phases |
verify_load |
0.046361 |
| modify_existing_workbook_plain |
wolfxl_modify_patcher_only |
modify_save |
0.003260 |
| modify_existing_workbook_plain |
wolfxl_modify_patcher_only |
setup_copy |
0.000176 |
| modify_existing_workbook_plain |
wolfxl_modify_patcher_only |
verify_load |
0.045950 |
WolfXL Direct Rust Core Diagnostic
These rows compare WolfXL's full internal Rust reader directly with direct Rust readers. They are diagnostic only and do not replace the public API comparison above.
| Case |
Competitor |
Surface pair |
Speedup vs competitor |
| read_formula_text |
calamine |
direct_rust_api -> direct_rust_api |
2.18x |
| read_values_plain |
calamine |
direct_rust_api -> direct_rust_api |
1.17x |
| read_values_plain |
office_oxide |
direct_rust_api -> direct_rust_api |
1.65x |
| read_values_plain |
umya-spreadsheet |
direct_rust_api -> direct_rust_api |
4.62x |
WolfXL Direct Rust Writer Diagnostic
These rows compare WolfXL's internal Rust writer directly with direct Rust writers. They are diagnostic only and do not replace the public API comparison above.
| Case |
Competitor |
Surface pair |
Speedup vs competitor |
| write_cell_by_cell_plain |
office_oxide |
direct_rust_api -> direct_rust_api |
2.03x |
| write_cell_by_cell_plain |
rust_xlsxwriter |
direct_rust_api -> direct_rust_api |
1.89x |
| write_cell_by_cell_plain |
umya-spreadsheet |
direct_rust_api -> direct_rust_api |
4.48x |
| write_cell_by_cell_plain |
xlsxwriter |
direct_rust_api -> direct_rust_api |
3.45x |
| write_formula_cells |
rust_xlsxwriter |
direct_rust_api -> direct_rust_api |
1.52x |
| write_formula_cells |
xlsxwriter |
direct_rust_api -> direct_rust_api |
2.82x |
| write_multi_sheet_plain |
rust_xlsxwriter |
direct_rust_api -> direct_rust_api |
1.56x |
| write_multi_sheet_plain |
xlsxwriter |
direct_rust_api -> direct_rust_api |
3.21x |
| write_styled_cells |
rust_xlsxwriter |
direct_rust_api -> direct_rust_api |
2.01x |
| write_styled_cells |
xlsxwriter |
direct_rust_api -> direct_rust_api |
3.40x |
| write_unique_strings_plain |
rust_xlsxwriter |
direct_rust_api -> direct_rust_api |
1.92x |
| write_unique_strings_plain |
xlsxwriter |
direct_rust_api -> direct_rust_api |
3.36x |