On Tuesday, November 19, 2013 2:04:45 AM UTC-8, Dmitry Lomov wrote:
>
> Here is the change: https://code.google.com/p/v8/source/detail?r=15205
> Instead of weak handles, I taught our GC to free array buffer backing 
> store when array buffers die.
>

That's awesome. Something like that is exactly what I originally wanted as 
an extension of Object::SetIndexedPropertiesToExternalArrayData() where a 
user could pass in a fourth optional bool that told the Object to 
automatically clean up the attached external memory when the Object was 
GC'd.

Oh well. Not like it matters much now. :)
 

> Off the top of my head, this smells like GC kicking in, although it does 
> not explain why this is not reproducible with a native callback below. Can 
> you share code for these benchmarks? 
>

Sure. It's pretty basic:

var ITER = 1e6;
var SIZE = 16 * 1024;
// This size runs over 4x faster in Node
//var SIZE = 32 * 1024;
var t = -Date.now();

for (var i = 0; i < ITER; i++) {
  new Uint8Array(SIZE);
}

t += Date.now();

console.log((t * 1e6 / ITER).toFixed(1));
 
I can't exhibit the same problem in d8 that exists in Node. But in Node on 
my machine the 16KB allocations run in ~1800ns/op while the 32KB 
allocations run in ~500ns/op. Here's Node's ArrayBuffer::Allocator 
implementation: http://git.io/bK_aAA

Also, I was incorrect. The issue does still occur if called using the C++ 
API. Testing your hypothesis about GC I ran the tests using --prof and got 
the following:

16KB size:

 [GC]:
   ticks  total  nonlib   name
    536   29.1%

32KB size:

[GC]:
  ticks  total  nonlib   name
   224   46.9%

Here are the full logs for both 
runs: https://gist.github.com/trevnorris/7551538

Let me know if there's any other information that would be helpful. :)

-- 
-- 
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users
--- 
You received this message because you are subscribed to the Google Groups 
"v8-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to