mirror of
https://github.com/danbulant/oxc
synced 2026-05-22 21:58:36 +00:00
Hi! I have created a proof of concept of improving using oxc in JavaScript. The method is not polished but it provides valuable insights for future direction! Feel free to close~ It is for reference only :) # Context This is a proof of concept implementation of passing binary AST to JavaScript. JavaScript can selectively read flexbuffers-based AST nodes on demand to avoid the deserialization toll. More context [here](https://dev.to/herrington_darkholme/benchmark-typescript-parsers-demystify-rust-tooling-performance-2go8). # Changes * Add a `parseSyncBuffer` napi method to return a binary AST from Rust to JavaScript. The AST is in flexbuffer format. * Add a `test_buffer.js` to test usage of flexbuffers in JavaScript. It is in cjs format because flexbuffers does not support ESM :/ # Result Some preliminary results, for reference only. ``` ~ node test_buffer.js testJSON: 4.043s testBuffer: 2.395s ``` Buffer based API is 100% faster than JSON. # Future Ideas * Flexbuffers itself is slow. A better binary protocol is desired! * Using binary reader to traverse AST is undesirable. A proxy-based API to emulate object behavior will be nice.
21 lines
547 B
YAML
21 lines
547 B
YAML
lockfileVersion: '6.0'
|
|
|
|
devDependencies:
|
|
'@napi-rs/cli':
|
|
specifier: ^2.15.2
|
|
version: 2.15.2
|
|
flatbuffers:
|
|
specifier: ^23.5.26
|
|
version: 23.5.26
|
|
|
|
packages:
|
|
|
|
/@napi-rs/cli@2.15.2:
|
|
resolution: {integrity: sha512-80tBCtCnEhAmFtB9oPM0FL74uW7fAmtpeqjvERH7Q1z/aZzCAs/iNfE7U3ehpwg9Q07Ob2Eh/+1guyCdX/p24w==}
|
|
engines: {node: '>= 10'}
|
|
hasBin: true
|
|
dev: true
|
|
|
|
/flatbuffers@23.5.26:
|
|
resolution: {integrity: sha512-vE+SI9vrJDwi1oETtTIFldC/o9GsVKRM+s6EL0nQgxXlYV1Vc4Tk30hj4xGICftInKQKj1F3up2n8UbIVobISQ==}
|
|
dev: true
|