Skip to content

Commit 5bc2bfd

Browse files
authored
perf(napi): optimize primitive napi functions (denoland#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 ```
1 parent 8a2369c commit 5bc2bfd

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

serde_v8/ser.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use serde::ser;
33
use serde::ser::Serialize;
44

55
use std::cell::RefCell;
6+
use std::ops::DerefMut;
67

78
use crate::error::{Error, Result};
89
use crate::keys::v8_struct_key;
@@ -435,7 +436,8 @@ impl<'a, 'b, 'c> ser::Serializer for Serializer<'a, 'b, 'c> {
435436
}
436437

437438
fn serialize_f64(self, v: f64) -> JsResult<'a> {
438-
Ok(v8::Number::new(&mut self.scope.borrow_mut(), v).into())
439+
let scope = &mut self.scope.borrow_mut();
440+
Ok(v8::Number::new(scope.deref_mut(), v).into())
439441
}
440442

441443
fn serialize_bool(self, v: bool) -> JsResult<'a> {

0 commit comments

Comments
 (0)