@sohale/implisolid
Version:
A Solid Modelling Kernel in Javascript based on Implicit Surfaces, for MP5 file format
65 lines (57 loc) • 1.9 kB
JavaScript
'use asm.js';
;
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 );
}