summaryrefslogtreecommitdiff
path: root/serde_v8/ser.rs
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 /serde_v8/ser.rs
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 'serde_v8/ser.rs')
-rw-r--r--serde_v8/ser.rs4
1 files changed, 3 insertions, 1 deletions
diff --git a/serde_v8/ser.rs b/serde_v8/ser.rs
index 615c9b782..dc3fbd143 100644
--- a/serde_v8/ser.rs
+++ b/serde_v8/ser.rs
@@ -3,6 +3,7 @@ use serde::ser;
use serde::ser::Serialize;
use std::cell::RefCell;
+use std::ops::DerefMut;
use crate::error::{Error, Result};
use crate::keys::v8_struct_key;
@@ -435,7 +436,8 @@ impl<'a, 'b, 'c> ser::Serializer for Serializer<'a, 'b, 'c> {
}
fn serialize_f64(self, v: f64) -> JsResult<'a> {
- Ok(v8::Number::new(&mut self.scope.borrow_mut(), v).into())
+ let scope = &mut self.scope.borrow_mut();
+ Ok(v8::Number::new(scope.deref_mut(), v).into())
}
fn serialize_bool(self, v: bool) -> JsResult<'a> {