From 722ea20e860df0a568b5d97734ad8d89aa7382a9 Mon Sep 17 00:00:00 2001 From: Aapo Alasuutari Date: Thu, 20 Oct 2022 07:05:56 +0300 Subject: perf(ext/ffi): Fast UnsafePointerView read functions (#16351) This PR makes pointer read methods of `Deno.UnsafePointerView` Fast API compliant, with the exception of `getCString` which cannot be made fast with current V8 Fast API. --- test_ffi/tests/bench.js | 50 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) (limited to 'test_ffi') diff --git a/test_ffi/tests/bench.js b/test_ffi/tests/bench.js index b59097082..a20ee3c80 100644 --- a/test_ffi/tests/bench.js +++ b/test_ffi/tests/bench.js @@ -251,7 +251,7 @@ Deno.bench("hash()", () => { const { ffi_string } = dylib.symbols; Deno.bench( "c string", - () => new Deno.UnsafePointerView(ffi_string()).getCString(), + () => Deno.UnsafePointerView.getCString(ffi_string()), ); const { add_u32 } = dylib.symbols; @@ -643,3 +643,51 @@ const cstringPointerView = new Deno.UnsafePointerView( Deno.bench("Deno.UnsafePointerView#getCString", () => { cstringPointerView.getCString(); }); + +const bufferPointerView = new Deno.UnsafePointerView( + Deno.UnsafePointer.of(buffer), +); + +Deno.bench("Deno.UnsafePointerView#getBool", () => { + bufferPointerView.getBool(); +}); + +Deno.bench("Deno.UnsafePointerView#getUint8", () => { + bufferPointerView.getUint8(); +}); + +Deno.bench("Deno.UnsafePointerView#getInt8", () => { + bufferPointerView.getInt8(); +}); + +Deno.bench("Deno.UnsafePointerView#getUint16", () => { + bufferPointerView.getUint16(); +}); + +Deno.bench("Deno.UnsafePointerView#getInt16", () => { + bufferPointerView.getInt16(); +}); + +Deno.bench("Deno.UnsafePointerView#getUint32", () => { + bufferPointerView.getUint32(); +}); + +Deno.bench("Deno.UnsafePointerView#getInt32", () => { + bufferPointerView.getInt32(); +}); + +Deno.bench("Deno.UnsafePointerView#getBigUint64", () => { + bufferPointerView.getBigUint64(); +}); + +Deno.bench("Deno.UnsafePointerView#getBigInt64", () => { + bufferPointerView.getBigInt64(); +}); + +Deno.bench("Deno.UnsafePointerView#getFloat32", () => { + bufferPointerView.getFloat32(); +}); + +Deno.bench("Deno.UnsafePointerView#getFloat64", () => { + bufferPointerView.getFloat64(); +}); -- cgit v1.2.3