You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Oct 31, 2025. It is now read-only.
We should look into improve our clean build times of when building spriv-builder & rustc_codegen_spirv as that is the main scenario in CI and also useful for users if our crates rebuild fast.
Right now it looks like we have a couple of quite unfortunate serial dependencies that significantly increases the wall time. Here is the current results with cargo build --release -p spirv-builder -Z timings on my AMD 5950x (32 vCPU):
Potential optimizations
Could spirv-builder be the one depending on spirv-tools instead of rustc_codegen_spirv?
I.e. move the responsibility of running spirv-opt/spirv-val and final linking to the builder.
Remove/replace serde, quite crazy it takes 20 seconds to compile
Think we only have two use cases, our ModuleResult output and then the internal decorations that is using more complex serde implementation (CustomDecoration).
have no idea how serde+serde_json is taking such a crazy long time to build here though, can't see any other crates enabling tons of types that serde derive macros are used on or similar
ModuleResult would be trivial to replace serde with nanoserde, could work for CustomDecoration also?
Remove/replace sanitize-filename dependency that compiles and uses regex crate for super trivial things
Optimize builds of rspirv itself somehow?
Unfortunate that it is so slow to build by itself but could be hard to fix and tons of types in it. No open issues on it in the rspirv repo as far as I could see
Determine why rustc_codegen_spirv is not split in frontend/codegen sections in the profile report.
This would enable spriv-builder itself to start building earlier and before the codegen of rustc_codegen_spirv is done.
Update: This is not possible as it it needs to be built as a dylib
If we do get rid of serde and manage to make sure rustc_codegen_spirv doesn't have to wait for the spirv-tools-sys build, we could get get a 15+ second wall time improvement here as rustc_codegen_spirv could start as soon as frontend section of rspirv has been built:
-
We should look into improve our clean build times of when building
spriv-builder&rustc_codegen_spirvas that is the main scenario in CI and also useful for users if our crates rebuild fast.Right now it looks like we have a couple of quite unfortunate serial dependencies that significantly increases the wall time. Here is the current results with
cargo build --release -p spirv-builder -Z timingson my AMD 5950x (32 vCPU):Potential optimizations
spirv-builderbe the one depending onspirv-toolsinstead ofrustc_codegen_spirv?serde, quite crazy it takes 20 seconds to compileModuleResultoutput and then the internal decorations that is using more complex serde implementation (CustomDecoration).serde+serde_jsonis taking such a crazy long time to build here though, can't see any other crates enabling tons of types that serde derive macros are used on or similarModuleResultwould be trivial to replace serde withnanoserde, could work forCustomDecorationalso?nanoserdeinstead ofserde#860sanitize-filenamedependency that compiles and usesregexcrate for super trivial thingsrspirvitself somehow?rspirvrepo as far as I could seeDetermine whyreport.rustc_codegen_spirvis not split in frontend/codegen sections in the profilespriv-builderitself to start building earlier and before the codegen ofrustc_codegen_spirvis done.dylibIf we do get rid of serde and manage to make sure
rustc_codegen_spirvdoesn't have to wait for thespirv-tools-sysbuild, we could get get a 15+ second wall time improvement here asrustc_codegen_spirvcould start as soon as frontend section ofrspirvhas been built:-