Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Merged
merged 1 commit into from
Dec 28, 2023

Conversation

dtolnay
Copy link
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
Collaborator

Enselic commented Dec 28, 2023

Nice, thanks!

@Enselic Enselic merged commit fbabe18 into trishume:master Dec 28, 2023
4 checks passed
@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.

None yet

2 participants