summaryrefslogtreecommitdiff
path: root/test_napi/src
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2022-10-07 03:54:01 -0700
committerGitHub <noreply@github.com>2022-10-07 16:24:01 +0530
commite136bd86b3bf0a14d3379b389a44547d332b9ca5 (patch)
treefc13ec6bb7a5a9b2ddd051789e482f4bd8e0dcb5 /test_napi/src
parentbe80c57b3c65ab8dd074e8a1487b8830843a7ac9 (diff)
perf(napi): optimize primitive napi functions (#16163)
This optimization applies on `napi_get_undefined`, `napi_get_null` & `napi_get_boolean`. ``` # main benchmark time (avg) (min … max) p75 p99 p995 ---------------------------------------------------------- ----------------------------- warmup 482.55 ps/iter (462.5 ps … 15.67 ns) 475 ps 525 ps 829.1 ps napi_get_undefined 25.07 ns/iter (24.03 ns … 36.87 ns) 25.37 ns 27.09 ns 34.85 ns ``` ``` # This patch benchmark time (avg) (min … max) p75 p99 p995 ---------------------------------------------------------- ----------------------------- warmup 484.78 ps/iter (462.5 ps … 14.4 ns) 475 ps 554.1 ps 583.3 ps napi_get_undefined 15.52 ns/iter (15.35 ns … 22.14 ns) 15.41 ns 17.18 ns 20.02 ns ```
Diffstat (limited to 'test_napi/src')
-rw-r--r--test_napi/src/lib.rs2
-rw-r--r--test_napi/src/primitives.rs23
2 files changed, 25 insertions, 0 deletions
diff --git a/test_napi/src/lib.rs b/test_napi/src/lib.rs
index e058686c5..dd0c7cbed 100644
--- a/test_napi/src/lib.rs
+++ b/test_napi/src/lib.rs
@@ -10,6 +10,7 @@ pub mod callback;
pub mod coerce;
pub mod numbers;
pub mod object_wrap;
+pub mod primitives;
pub mod promise;
pub mod properties;
pub mod strings;
@@ -67,6 +68,7 @@ unsafe extern "C" fn napi_register_module_v1(
numbers::init(env, exports);
typedarray::init(env, exports);
array::init(env, exports);
+ primitives::init(env, exports);
properties::init(env, exports);
promise::init(env, exports);
coerce::init(env, exports);
diff --git a/test_napi/src/primitives.rs b/test_napi/src/primitives.rs
new file mode 100644
index 000000000..c5fbbba04
--- /dev/null
+++ b/test_napi/src/primitives.rs
@@ -0,0 +1,23 @@
+use napi_sys::*;
+use std::ptr;
+
+extern "C" fn test_get_undefined(
+ env: napi_env,
+ _: napi_callback_info,
+) -> napi_value {
+ let mut result = ptr::null_mut();
+ unsafe { napi_get_undefined(env, &mut result) };
+ result
+}
+
+pub fn init(env: napi_env, exports: napi_value) {
+ let properties = &[crate::new_property!(
+ env,
+ "test_get_undefined\0",
+ test_get_undefined
+ )];
+
+ unsafe {
+ napi_define_properties(env, exports, properties.len(), properties.as_ptr())
+ };
+}