diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2023-03-16 23:19:46 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-17 08:49:46 +0530 |
commit | 8f9becee76f26db7893caabb9f3a1a7980791e0e (patch) | |
tree | c15a51afa3773d2fa76dbeacdf25e9ac43a87840 /cli | |
parent | 35196eab279340376929dd75ed717ef4830e2fa9 (diff) |
perf: disable runtime snapshot compression (#18239)
This commit removes compression for the runtime JS code.
It means that we will have a bigger binary, but faster startup. After
several discussion in the CLI team we decided it's worth to trade
about 3Mb of binary size for 2ms faster startup time. With WebGPU
removed in 35196eab279340376929dd75ed717ef4830e2fa9
it shouldn't have such a big impact on the binary size.
Diffstat (limited to 'cli')
-rw-r--r-- | cli/Cargo.toml | 3 | ||||
-rw-r--r-- | cli/build.rs | 9 | ||||
-rw-r--r-- | cli/js.rs | 29 |
3 files changed, 4 insertions, 37 deletions
diff --git a/cli/Cargo.toml b/cli/Cargo.toml index dc5d46ac8..5283fe900 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -35,8 +35,6 @@ serde_json.workspace = true zstd.workspace = true glibc_version = "0.1.2" -lzzzz = '1.0' - [target.'cfg(windows)'.build-dependencies] winapi.workspace = true winres.workspace = true @@ -81,7 +79,6 @@ jsonc-parser = { version = "=0.21.0", features = ["serde"] } libc.workspace = true log = { workspace = true, features = ["serde"] } lsp-types.workspace = true -lzzzz = '1.0' mitata = "=0.0.7" monch = "=0.4.1" notify.workspace = true diff --git a/cli/build.rs b/cli/build.rs index 5b2c5fbb4..216969e39 100644 --- a/cli/build.rs +++ b/cli/build.rs @@ -364,14 +364,7 @@ fn create_cli_snapshot(snapshot_path: PathBuf) { snapshot_path, startup_snapshot: Some(deno_runtime::js::deno_isolate_init()), extensions, - compression_cb: Some(Box::new(|vec, snapshot_slice| { - lzzzz::lz4_hc::compress_to_vec( - snapshot_slice, - vec, - lzzzz::lz4_hc::CLEVEL_MAX, - ) - .expect("snapshot compression failed"); - })), + compression_cb: None, snapshot_module_load_cb: None, }) } @@ -2,36 +2,13 @@ use deno_core::Snapshot; use log::debug; -use once_cell::sync::Lazy; -pub static CLI_SNAPSHOT: Lazy<Box<[u8]>> = Lazy::new( - #[allow(clippy::uninit_vec)] - #[cold] - #[inline(never)] - || { - static COMPRESSED_CLI_SNAPSHOT: &[u8] = - include_bytes!(concat!(env!("OUT_DIR"), "/CLI_SNAPSHOT.bin")); - - let size = - u32::from_le_bytes(COMPRESSED_CLI_SNAPSHOT[0..4].try_into().unwrap()) - as usize; - let mut vec = Vec::with_capacity(size); - - // SAFETY: vec is allocated with exact snapshot size (+ alignment) - // SAFETY: non zeroed bytes are overwritten with decompressed snapshot - unsafe { - vec.set_len(size); - } - - lzzzz::lz4::decompress(&COMPRESSED_CLI_SNAPSHOT[4..], &mut vec).unwrap(); - - vec.into_boxed_slice() - }, -); +static CLI_SNAPSHOT: &[u8] = + include_bytes!(concat!(env!("OUT_DIR"), "/CLI_SNAPSHOT.bin")); pub fn deno_isolate_init() -> Snapshot { debug!("Deno isolate init with snapshots."); - Snapshot::Static(&CLI_SNAPSHOT) + Snapshot::Static(CLI_SNAPSHOT) } #[cfg(test)] |