emilk/egui

Improve compile times of `eframe`

Open

#4,481 创建于 2024年5月11日

在 GitHub 查看
 (4 评论) (6 反应) (0 负责人)Rust (2,037 fork)batch import
dependenciesgood first issuehelp wanted

仓库指标

Star
 (29,051 star)
PR 合并指标
 (平均合并 11天 20小时) (30 天内合并 47 个 PR)

描述

eframe currently compiles in about 10s on my M3 MacBook Pro, as measured by

cargo clean && cargo build --timings -p eframe 

Getting rid of proc-macros

A lot of that time is waiting for proc-macro and syn so that we can start compiling bytemuck, thiserror, and foreign-types-macros (used by core-graphics, which is used by winit).

Getting rid of the proc-macros in bytemuck should be simple (replace by manual implementation of its unsafe traits for Color32, Vertex etc). Likewise, replacing thiserror should also be fairly trivial.

I haven't looked into foreign-types, but even removing some proc-macro usage should allow some crates to start compiling earlier, hopefully reducing the total end-to-end compilation time.

Other stuff

  • ahash has a build.rs takes a full second to run
  • icrate takes 5-6 seconds of CPU time

wgpu

Switching glow for wgpu adds another 10s, i.e. doubling the compilation time. To investigate the compilation time of wgpu, run:

cargo clean && cargo build --timings -p wgpu

贡献者指南