diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2023-03-21 20:11:22 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-21 19:11:22 +0000 |
commit | cc46f6776c80ddb9320487e21ec479db0e59d270 (patch) | |
tree | ab8809beccd71e5c009fd8a0ea059882cee5be6e /cli/tsc/mod.rs | |
parent | a561cc28cd59b51846fce9a9de598e2fd6e9b54e (diff) |
Revert "perf: disable TSC snapshot compression (#18333)" (#18336)
This reverts commit 0d27de943a60f5ca60e2116648719c235163361a.
Diffstat (limited to 'cli/tsc/mod.rs')
-rw-r--r-- | cli/tsc/mod.rs | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/cli/tsc/mod.rs b/cli/tsc/mod.rs index 60ef1c5d6..43fccb37e 100644 --- a/cli/tsc/mod.rs +++ b/cli/tsc/mod.rs @@ -52,8 +52,30 @@ pub use self::diagnostics::DiagnosticMessageChain; pub use self::diagnostics::Diagnostics; pub use self::diagnostics::Position; -pub static COMPILER_SNAPSHOT: &[u8] = - include_bytes!(concat!(env!("OUT_DIR"), "/COMPILER_SNAPSHOT.bin")); +pub static COMPILER_SNAPSHOT: Lazy<Box<[u8]>> = Lazy::new( + #[cold] + #[inline(never)] + || { + static COMPRESSED_COMPILER_SNAPSHOT: &[u8] = + include_bytes!(concat!(env!("OUT_DIR"), "/COMPILER_SNAPSHOT.bin")); + + // NOTE(bartlomieju): Compressing the TSC snapshot in debug build took + // ~45s on M1 MacBook Pro; without compression it took ~1s. + // Thus we're not not using compressed snapshot, trading off + // a lot of build time for some startup time in debug build. + #[cfg(debug_assertions)] + return COMPRESSED_COMPILER_SNAPSHOT.to_vec().into_boxed_slice(); + + #[cfg(not(debug_assertions))] + zstd::bulk::decompress( + &COMPRESSED_COMPILER_SNAPSHOT[4..], + u32::from_le_bytes(COMPRESSED_COMPILER_SNAPSHOT[0..4].try_into().unwrap()) + as usize, + ) + .unwrap() + .into_boxed_slice() + }, +); pub fn get_types_declaration_file_text(unstable: bool) -> String { let mut assets = get_asset_texts_from_new_runtime() @@ -115,7 +137,7 @@ fn get_asset_texts_from_new_runtime() -> Result<Vec<AssetText>, AnyError> { } pub fn compiler_snapshot() -> Snapshot { - Snapshot::Static(COMPILER_SNAPSHOT) + Snapshot::Static(&COMPILER_SNAPSHOT) } macro_rules! inc { |