UNPKG

@sohale/implisolid

Version:

A Solid Modelling Kernel in Javascript based on Implicit Surfaces, for MP5 file format

65 lines (57 loc) 1.9 kB
'use asm.js'; 'use strict'; function load_done() { console.info("post-load", 0*Module); Module; var times = []; var repeats = 10; var d1 = new Date(); var dm1 = d1; for(var i=0;i<repeats;++i) { demo(); var dm2 = new Date(); times.push(dm2 - dm1); dm1 = dm2; } var d2 = new Date(); console.info("End of experiment. Execution times:", (d2-d1) / repeats , times); //Module._ } function load_done_timeout() { console.info("wait"); setTimeout(function(){ load_done() }, 2000); } var Module = { preRun:[ //letmeknow=function (){console.log("Loading memory profiler");}, // memoryprofiler_add_hooks ], // memoryInitializerPrefixURL: "../build/", onRuntimeInitialized: load_done_timeout, }; importScripts('e4_emworker.compiled.js'); //console.info("in between"); //load_done(); // It can be also run like this: /* *Use of importScripts() is based on the question *http://stackoverflow.com/questions/24968718/how-can-i-use-an-emscripted-js-library-in-a-web-worker/40940774#40940774 *Also see *http://stackoverflow.com/questions/29427140/transferring-data-using-emscripten-worker-api-without-copying?rq=1 * */ function demo() { // Example function call var num_floats = 10; // * 10000; const FLOATSIZE = Float32Array.BYTES_PER_ELEMENT; const INTSIZE = Uint32Array.BYTES_PER_ELEMENT; var rawptr = Module._malloc(FLOATSIZE * num_floats); /* This allocates space in the C++ side, in order to create the array of vertices. */ var ptrfloat = rawptr / FLOATSIZE; var typedview = Module.HEAPF32.subarray(ptrfloat, ptrfloat + num_floats); // typedview.set(points); typedview[0] = 3.1415901234567890 typedview[num_floats-1] = 3.1415901234567890 Module._worker_function(0,0, rawptr, num_floats); Module._free( rawptr ); }