Skip to content

Eliminate syntect library's dependency on serde's "derive" feature#511

Merged
Enselic merged 1 commit intotrishume:masterfrom
dtolnay-contrib:derive
Dec 28, 2023
Merged

Eliminate syntect library's dependency on serde's "derive" feature#511
Enselic merged 1 commit intotrishume:masterfrom
dtolnay-contrib:derive

Conversation

@dtolnay
Copy link
Copy Markdown
Contributor

@dtolnay dtolnay commented Dec 28, 2023

Here are charts from cargo build --timings.

Notice how Before, syn -> serde_derive -> serde -> {bincode,serde_json,plist} -> syntect is a bottleneck in the build, whereas After, nothing related to serde is on the critical path. Instead, libc -> cc -> onig_sys -> onig -> syntect is the new bottleneck.

The build is 15% faster end-to-end (7.6 seconds vs 8.9 seconds). More importantly, notice how if whatever downstream crate that depends on syntect has other dependencies that depend on serde, those can begin building after only 2.6 seconds, instead of after 6.3 seconds, which can speed up builds by up to 3.7 seconds, including making IDEs more responsive by that amount.

BeforeAfter

@Enselic
Copy link
Copy Markdown
Collaborator

Enselic commented Dec 28, 2023

Nice, thanks!

@Enselic Enselic merged commit fbabe18 into trishume:master Dec 28, 2023
@dtolnay dtolnay deleted the derive branch December 28, 2023 22:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants