summaryrefslogtreecommitdiff
path: root/ext/node/lib.rs
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2023-07-05 22:45:10 +0530
committerGitHub <noreply@github.com>2023-07-05 22:45:10 +0530
commit57fae55d822f5aae52ea93d0e55155bc9c12672f (patch)
tree1717428419a91d702b1bc690aa86880f2f917b89 /ext/node/lib.rs
parent2e7bcb422d593248cfb654ee1b7ffd341c83353c (diff)
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 ```
Diffstat (limited to 'ext/node/lib.rs')
-rw-r--r--ext/node/lib.rs9
1 files changed, 9 insertions, 0 deletions
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<P>,
op_node_build_os,
+ op_is_any_arraybuffer,
ops::require::op_require_init_paths,
ops::require::op_require_node_module_paths<P>,
ops::require::op_require_proxy_path,