JSFiddle - React, Tailwind, and code Playground

by johnsonjo4531

HTML

<script src="https://unpkg.com/[email protected]/dist/greenlet.umd.js"></script>

JavaScript

let add1 = greenlet( async buffer => {
  var view = new Uint32Array(buffer);
  // use the view here
  // transfer the buffer
	return view.buffer;
});

var timeout = ms => new Promise(res => setTimeout(res, ms));

(async () => {
  // this await allows the blob url to load giving more accurate timing calculations
  await timeout(0);
  try {
    // create a large buffer
    var view =  new Uint32Array(10000000).map((x,i) => i);
    var start = performance.now();
    var buffer = add1(view.buffer);
    console.log('main marshalling time', performance.now() - start);
    console.log(new Uint32Array(await buffer));
    console.log('total marshalling time', performance.now() - start);
    // since view's buffer was transferred view will be empty
    console.log(view, view.buffer);
  } catch (e) {
    console.error(e);
  }
})();