diff options
author | Divy Srivastava <dj.srivastava23@gmail.com> | 2022-10-07 03:54:01 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-07 16:24:01 +0530 |
commit | e136bd86b3bf0a14d3379b389a44547d332b9ca5 (patch) | |
tree | fc13ec6bb7a5a9b2ddd051789e482f4bd8e0dcb5 /test_napi/src | |
parent | be80c57b3c65ab8dd074e8a1487b8830843a7ac9 (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.rs | 2 | ||||
-rw-r--r-- | test_napi/src/primitives.rs | 23 |
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()) + }; +} |