Very cool Stéphan. Also doesn't V8 come with it's own typed array implementation now? I know it didn't when node added one.
Is it possible for native addons to use this pure js implementation? I have webgl bindings I wrote for node knockout. I wonder if it would be possible to use your implementation for my bindings. github.com/creationix/node-webgl 2012/4/11 Stéphan Kochen <step...@kochen.nl> > I noticed that TypedArrays use `calloc`, when not backed by a Buffer, > which seemed like something that'd be slow. I sat down and wrote a quick JS > implementation, that relies only on Buffer and a slightly modified > `SlowBuffer.makeFastBuffer`. It's a stand-alone package at: > https://github.com/stephank/node-arrays > > It requires Node 0.7.7, which includes Buffer alignment fixes. It passes > the WebGL conformance tests. I made a quick benchmark to compare > performance with the native implementation currently in Node. On the two > Macs I have access to, I get about the same numbers: > > $ node test/benchmark.js > Small ArrayBuffer: 0.00149 ms (native) vs. 0.000603 ms (pure-js), ×0.40 > Large ArrayBuffer: 0.007311 ms (native) vs. 0.008317 ms (pure-js), ×1.14 > Small Int8Array: 0.001472 ms (native) vs. 0.00066 ms (pure-js), ×0.45 > Large Int8Array: 0.007359 ms (native) vs. 0.008385 ms (pure-js), ×1.14 > > > > For small allocations, there's a clear win from Buffer's pooling. There's > a slight loss for allocations exceeding the pool size, but then again, I've > not yet profiled the code. > > If anyone feels the need to try this on a real world project, there's a > node branch at: > https://github.com/stephank/node/tree/js-arrays > > Note that there are slight differences in behavior for stuff that falls > outside the spec; see: > https://github.com/stephank/node/commit/3c13517a > > -- > Stéphan Kochen > > >