summaryrefslogtreecommitdiff
path: root/cli/tsc
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2023-03-21 20:11:22 +0100
committerGitHub <noreply@github.com>2023-03-21 19:11:22 +0000
commitcc46f6776c80ddb9320487e21ec479db0e59d270 (patch)
treeab8809beccd71e5c009fd8a0ea059882cee5be6e /cli/tsc
parenta561cc28cd59b51846fce9a9de598e2fd6e9b54e (diff)
Revert "perf: disable TSC snapshot compression (#18333)" (#18336)
This reverts commit 0d27de943a60f5ca60e2116648719c235163361a.
Diffstat (limited to 'cli/tsc')
-rw-r--r--cli/tsc/mod.rs28
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 {