From 57fae55d822f5aae52ea93d0e55155bc9c12672f Mon Sep 17 00:00:00 2001 From: Divy Srivastava Date: Wed, 5 Jul 2023 22:45:10 +0530 Subject: perf(ext/node): optimize net streams (#19678) ~4.5x improvement in `npm:ws` echo benchmark: ``` $ ./load_test 10 0.0.0.0 8080 0 0 Using message size of 20 bytes Running benchmark now... Msg/sec: 101083.750000 Msg/sec: 103606.000000 ^C $ ./load_test 10 0.0.0.0 8080 0 0 Using message size of 20 bytes Running benchmark now... Msg/sec: 24906.750000 Msg/sec: 28478.000000 ^C ``` --- ext/node/lib.rs | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'ext/node/lib.rs') diff --git a/ext/node/lib.rs b/ext/node/lib.rs index f139f0c7b..6d496f001 100644 --- a/ext/node/lib.rs +++ b/ext/node/lib.rs @@ -9,7 +9,10 @@ use deno_core::error::AnyError; use deno_core::located_script_name; use deno_core::op; use deno_core::serde_json; +use deno_core::serde_v8; use deno_core::url::Url; +#[allow(unused_imports)] +use deno_core::v8; use deno_core::JsRuntime; use deno_core::ModuleSpecifier; use deno_fs::sync::MaybeSend; @@ -130,6 +133,11 @@ fn op_node_build_os() -> String { .to_string() } +#[op(fast)] +fn op_is_any_arraybuffer(value: serde_v8::Value) -> bool { + value.v8_value.is_array_buffer() || value.v8_value.is_shared_array_buffer() +} + deno_core::extension!(deno_node, deps = [ deno_io, deno_fs ], parameters = [P: NodePermissions], @@ -224,6 +232,7 @@ deno_core::extension!(deno_node, ops::zlib::brotli::op_brotli_decompress_stream_end, ops::http::op_node_http_request

, op_node_build_os, + op_is_any_arraybuffer, ops::require::op_require_init_paths, ops::require::op_require_node_module_paths

, ops::require::op_require_proxy_path, -- cgit v1.2.3