aiongg
e9fc890a86
Merge pull request #5026 from Silvertree2010/perf/export-speed
...
perf(engine): export page images on worker threads (about 80% less wall time)
2026-10-27 13:42:21 -04:00
NetterSilver and Claude Opus 5.5
37bf4ee986
perf(engine): export page images on worker threads
...
Export > Image spent its time in the PNG, JPEG and TIFF encoders, one
page after another: on a 55-page manual at 150 dpi, drawing every page
took about 0.34 s and encoding it 1.1 s (PNG) to 2.0 s (JPEG).
Exporter::images exports a list of pages, drawing and encoding several
at once on worker threads, each with its own PageRenderer (as
automation's extract_parallel does), and hands the files to a sink in
page order on the calling thread. Workers draw at most one page ahead
of the sink and fewer run when 1 GiB can't hold that many of the
largest page. The first page or sink error stops the export with every
earlier page handed over, as before. A page panic becomes that page's
error, and a panicking sink stops the workers. One page, one core or
wasm keeps the per-page loop. Export > Image and the doc_export_images
tool use it.
Files are byte-identical. One core is left for the interface (at most
8 workers). With examples/export_bench, on a Ryzen with 16 threads
(shared), mean of two medians of 21 runs:
PNG 150 dpi 1874 -> 340 ms (-82%)
JPEG 150 dpi 2106 -> 340 ms (-84%)
TIFF 150 dpi 2032 -> 375 ms (-82%)
PNG 300 dpi 3804 -> 590 ms (-84%)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-27 17:41:38 +01:00
aiongg
1dd2737b47
Merge pull request #4889 from aiongg/layout
...
refactor: shared module layout (craft-contrib#20)
2026-10-26 21:31:30 -04:00
aiongg
f022ef0671
style: cargo fmt on moved files
2026-10-27 00:34:32 +00:00
aiongg
323172e860
test(automation): end the file access scan at the test module, not at a cfg(test) use
2026-10-27 00:34:32 +00:00
aiongg
d449f2ce63
docs: name the ui-egui files by their new directories
2026-10-27 00:34:32 +00:00
aiongg
064632e0e8
test(ui-egui): name the page modules by their new directories
2026-10-27 00:34:32 +00:00
aiongg
3dbea4e7a0
docs(parity): point evidence at the ui-egui files' new directories
2026-10-27 00:34:32 +00:00
aiongg
cb94c8f047
refactor(ui-egui): move open_worker_tests.rs to platform/open_worker/tests.rs
2026-10-27 00:34:32 +00:00
aiongg
636656a9ea
refactor(ui-egui): move tab_context.rs into menus/
2026-10-27 00:34:32 +00:00
aiongg
cd0fc37c8d
refactor(ui-egui): move folders_ui.rs into home/
2026-10-27 00:34:32 +00:00
aiongg
7b3d688754
test(ui-egui): rerun the fontconfig tests by their platform:: path
2026-10-27 00:34:32 +00:00
aiongg
80c4572cfa
refactor(ui-egui): move system_fonts.rs into platform/
2026-10-27 00:34:32 +00:00
aiongg
ed09547ecf
refactor(ui-egui): move window_state.rs into persist/
2026-10-27 00:34:32 +00:00
aiongg
d25378c336
refactor(ui-egui): move units.rs into persist/
2026-10-27 00:34:32 +00:00
aiongg
dc25a6e341
refactor(ui-egui): move recovery.rs into persist/
2026-10-27 00:34:32 +00:00
aiongg
615232d0e5
refactor(ui-egui): move last_view.rs into persist/
2026-10-27 00:34:32 +00:00
aiongg
5527f931c9
refactor(ui-egui): move last_session.rs into persist/
2026-10-27 00:34:32 +00:00
aiongg
687f6f6187
refactor(ui-egui): move window_controls.rs into platform/
2026-10-27 00:34:32 +00:00
aiongg
90a1880aee
refactor(ui-egui): move updates.rs into platform/
2026-10-27 00:34:32 +00:00
aiongg
dc97e74e57
refactor(ui-egui): move ui_scale.rs into platform/
2026-10-27 00:34:32 +00:00
aiongg
2b4f7694dc
refactor(ui-egui): move portable.rs into platform/
2026-10-27 00:34:32 +00:00
aiongg
b37c3a934c
refactor(ui-egui): move pickers.rs into platform/
2026-10-27 00:34:32 +00:00
aiongg
16b49776de
refactor(ui-egui): move open_worker.rs into platform/
2026-10-27 00:34:32 +00:00
aiongg
d3cfadd9e2
refactor(ui-egui): move motion.rs into platform/
2026-10-27 00:34:32 +00:00
aiongg
6638646314
refactor(ui-egui): move macos_association.rs into platform/
2026-10-27 00:34:23 +00:00
skylar taylor-barrick
9a9813bf7d
Merge pull request #4880 from storytold/fix/nextest-0.9.150
...
ci: require nextest 0.9.150
2026-10-26 17:39:25 -06:00
aiongg
d15c5a2e21
refactor(ui-egui): move file_watch.rs into platform/
2026-10-26 22:46:12 +00:00
aiongg
3e7cc6e5cb
refactor(ui-egui): move drag_pointer.rs into platform/
2026-10-26 22:46:12 +00:00
aiongg
73cd1b16db
refactor(ui-egui): move icons.rs into widgets/
2026-10-26 22:46:12 +00:00
aiongg
228a91c19a
refactor(ui-egui): move icon_data.rs into widgets/
2026-10-26 22:46:12 +00:00
aiongg
963b25f59b
refactor(ui-egui): move side_panels.rs into panels/
2026-10-26 22:46:12 +00:00
aiongg
9c27b333f5
refactor(ui-egui): move search_ui.rs into panels/
2026-10-26 22:46:12 +00:00
aiongg
dc6b6a5c4e
refactor(ui-egui): move page_selection_ui.rs into panels/
2026-10-26 22:46:12 +00:00
aiongg
946767d22d
refactor(ui-egui): move organize_panel.rs into panels/
2026-10-26 22:46:12 +00:00
aiongg
9771123c72
refactor(ui-egui): move format_text_ui.rs into panels/
2026-10-26 22:46:12 +00:00
aiongg
604ad52c7d
refactor(ui-egui): move comments_panel.rs into panels/
2026-10-26 22:46:12 +00:00
aiongg
81e489b23f
refactor(ui-egui): move all_tools_ui.rs into panels/
2026-10-26 22:46:12 +00:00
aiongg
900d56c411
refactor(ui-egui): move word_count_ui.rs into dialogs/
2026-10-26 22:46:12 +00:00
aiongg
1096b2a6b7
refactor(ui-egui): move standards_ui.rs into dialogs/
2026-10-26 22:46:12 +00:00
aiongg
de0e370792
refactor(ui-egui): move protect.rs into dialogs/
2026-10-26 22:46:12 +00:00
aiongg
e080461257
refactor(ui-egui): move palette.rs into dialogs/
2026-10-26 22:46:12 +00:00
aiongg
7f0799c8bd
refactor(ui-egui): move pageboxes.rs into dialogs/
2026-10-26 22:46:12 +00:00
aiongg
e901fb838b
refactor(ui-egui): move marks_ui.rs into dialogs/
2026-10-26 22:46:12 +00:00
aiongg
f877aaf1c4
refactor(ui-egui): move credits.rs into dialogs/
2026-10-26 22:46:12 +00:00
aiongg
385e24ec2f
refactor(ui-egui): move comment_props.rs into dialogs/
2026-10-26 22:46:12 +00:00
aiongg
40bb91b402
refactor(ui-egui): move appearance.rs into dialogs/
2026-10-26 22:46:12 +00:00
aiongg
c5d498227d
refactor(ui-egui): move web_print.rs into workflows/
2026-10-26 22:46:12 +00:00
aiongg
9254db5e88
refactor(ui-egui): move print_ui.rs into workflows/
2026-10-26 22:46:12 +00:00
aiongg
37578f2bb3
refactor(ui-egui): move optimize_ui.rs into workflows/
2026-10-26 22:46:12 +00:00