jrsonnet-stdlib takes very long time to build?
Closed this issue · 2 comments
Regardless of the shitty MacBook Pro that I'm using, jrsonnet-stdlib ranks the slowest crate in cargo build
timings. It spends 90+% of the build time on codegen, which seems related to the codegenerated-stdlib
feature?
Env
- CPU: Intel i5-1038NG7 (8) @ 2.00GHz
- Rust 1.71.1 (eb26296b5 2023-08-03)
- Host: x86_64-apple-darwin
- Target: x86_64-apple-darwin
- jrsonnet-stdlib v0.5.0-pre95
Build
cargo clean
cargo build --release --timings
With Feature codegenerated-stdlib
![image](https://private-user-images.githubusercontent.com/98864/261181998-145dd6e7-2d22-45f8-954d-e64825e7a2aa.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA1MjcyMzMsIm5iZiI6MTcyMDUyNjkzMywicGF0aCI6Ii85ODg2NC8yNjExODE5OTgtMTQ1ZGQ2ZTctMmQyMi00NWY4LTk1NGQtZTY0ODI1ZTdhMmFhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzA5VDEyMDg1M1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTMyY2NkMDg5MjIwNTQ4NmRjYjlkMTY2MzVkZDQwNWJkM2Q3MTkwZDM2NmE1YTIwMTczODBmZjYwYzA1M2Q4MjcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.JKWobrMqYEuAsM7Arlj5zPzxX5uX5dIG7Uzd7nmlEJ0)
![image](https://private-user-images.githubusercontent.com/98864/261182083-58fa5719-7531-4010-bb1c-7677bf661a50.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA1MjcyMzMsIm5iZiI6MTcyMDUyNjkzMywicGF0aCI6Ii85ODg2NC8yNjExODIwODMtNThmYTU3MTktNzUzMS00MDEwLWJiMWMtNzY3N2JmNjYxYTUwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzA5VDEyMDg1M1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTExMTJkZTQyZmM2M2U1NjM0ZjAzYmI5NGU0ZmE0YTg2MGVmYzBiZDk5ZjI5YTM1NTlhY2NkNDE1NDAyZGMzMmEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.4XBVdoR2YM-3zKpy8lq0R8SQ6jy1dE0uDbtJvNn1eyM)
Without Feature codegenerated-stdlib
[dependencies.jrsonnet-stdlib]
version = "0.5.0-pre95"
default-features = false
features = ["exp-preserve-order"]
![image](https://private-user-images.githubusercontent.com/98864/261184109-7d2d2e3c-1cbf-4be5-baf2-c8535ef6ee53.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA1MjcyMzMsIm5iZiI6MTcyMDUyNjkzMywicGF0aCI6Ii85ODg2NC8yNjExODQxMDktN2QyZDJlM2MtMWNiZi00YmU1LWJhZjItYzg1MzVlZjZlZTUzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzA5VDEyMDg1M1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTlmY2NkNmQ1ZDc2MTE2NjgzY2FlZTg5OGQ2ZWE5NDc0NDkyMWI0YWZhMjZjNTI5NjFiZjFiOTY3NTc2ZTI3NjQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.zjlLGe6pojfnE-xkLUnr1eEYHiX6a9Qdlawvt4fH5r4)
![image](https://private-user-images.githubusercontent.com/98864/261184159-33742b71-f803-4e92-a654-893bff9babde.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA1MjcyMzMsIm5iZiI6MTcyMDUyNjkzMywicGF0aCI6Ii85ODg2NC8yNjExODQxNTktMzM3NDJiNzEtZjgwMy00ZTkyLWE2NTQtODkzYmZmOWJhYmRlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzA5VDEyMDg1M1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQzODI5YzIzZjE3MzcyNDY1YzAyYmE0ODFjZTIxY2YzYzFmNjg3NmQyMGViZGMzMTYwMjhjOWQ1MTQ3OGNmMTgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.2Tmd1F7-ZnTGXP3hk6Hd6CK0xd4sBG60N5FgeiUtCTI)
Previously, codegenerated-stdlib caused huge startup speedups.
Not much nowadays, as most of the standard library has been moved to native code (https://github.com/CertainLach/jrsonnet/blob/master/crates/jrsonnet-stdlib/src/std.jsonnet), but it's still better than parsing it every time.
I think this is normal, because it generates very large function, which llvm tries (and succeeds) to optimize a lot.
I would prefer to keep stdlib to be codegenerated by default (You can always disable default-features), until it is fully converted to Rust.
Understood. Thank you!