More Related Content Similar to Emscripten, asm.js, and billions of math ops (20) Emscripten, asm.js, and billions of math ops4. EMSCRIPTEN
LLVM-based project that compiles C and C++ into highly-
optimizable JavaScript in asm.js format
It lets you run C and C++ on the web at near-native speed,
without plugins.
7. C LIBRARY EXAMPLE
varsamplesData=Module._malloc(samples.length*8);
varoutJson=Module._malloc(4);
varoutJsonSize=Module._malloc(4);
Module.HEAPF64.set(samples,samplesData/8);
Module.ccall('samplesToTtm','number',['number','number','number','number',
[samplesData,samplesCount,sampleRate,layer,outJson,outJsonSize]);
Module._free(samplesData);
varjsonSize=Module.getValue(outJsonSize,'i32');
varjsonPtr=Module.getValue(outJson,'i32');
varjsonBytes=Module.HEAPU8.subarray(jsonPtr,jsonPtr+jsonSize);
varjson=newTextDecoder('utf-8').decode(jsonBytes);
JSON.parse(json);
8. SOME NUMBERS
180s × 41 000 samples per second = 7 380 000 samples
3 600 hops × 345 buckets × 4 410 samples × 2 =
10 954 440 000 multiplications