Updates:
        Status: Assigned
        Owner: [email protected]

Comment #1 on issue 2131 by [email protected]: Array.splice() slows down at arrays larger than 114467
http://code.google.com/p/v8/issues/detail?id=2131

Both arrays are in fast (non-dictionary) mode.

Profiling for splicing the first array:
Ticks per symbol:
600 6.4% v8::internal::Heap::DoScavenge(v8::internal::ObjectVisitor*, unsigned char*) 428 4.6% v8::internal::ScavengingVisitor<(v8::internal::MarksHandling)1, (v8::internal::LoggingAndProfiling)0>::EvacuateFixedArray(v8::internal::Map*, v8::internal::HeapObject**, v8::internal::HeapObject*) 405 4.3% void v8::internal::ScavengingVisitor<(v8::internal::MarksHandling)1, (v8::internal::LoggingAndProfiling)0>::EvacuateObject<(v8::internal::ScavengingVisitor<(v8::internal::MarksHandling)1, (v8::internal::LoggingAndProfiling)0>::ObjectContents)1, (v8::internal::ScavengingVisitor<(v8::internal::MarksHandling)1, (v8::internal::LoggingAndProfiling)0>::SizeRestriction)0, 4>(v8::internal::Map*, v8::internal::HeapObject**, v8::internal::HeapObject*, int)
       346   3.7% LazyCompile:* test.js:1 [js]
       261   2.8% CallIC:push [js]
200 2.1% v8::internal::FlexibleBodyVisitor<v8::internal::NewSpaceScavenger, v8::internal::FixedArray::BodyDescriptor, int>::Visit(v8::internal::Map*, v8::internal::HeapObject*)
       198   2.1% GLIBC_2.0   _IO_vfprintf
183 2.0% v8::internal::Heap::CopyBlock(unsigned char*, unsigned char*, int) 164 1.8% v8::internal::Deserializer::ReadChunk(v8::internal::Object**, v8::internal::Object**, int, unsigned char*)
[...]

Profiling for splicing the second array:
    101296  59.3% v8::internal::StoreBuffer::Compact()
30562 17.9% v8::internal::MoveElements(v8::internal::Heap*, v8::internal::AssertNoAllocation*, v8::internal::FixedArray*, int, v8::internal::FixedArray*, int, int)
     25010  14.7% T.2601
440 0.3% v8::internal::ScavengingVisitor<(v8::internal::MarksHandling)1, (v8::internal::LoggingAndProfiling)0>::EvacuateFixedArray(v8::internal::Map*, v8::internal::HeapObject**, v8::internal::HeapObject*) 436 0.3% void v8::internal::ScavengingVisitor<(v8::internal::MarksHandling)1, (v8::internal::LoggingAndProfiling)0>::EvacuateObject<(v8::internal::ScavengingVisitor<(v8::internal::MarksHandling)1, (v8::internal::LoggingAndProfiling)0>::ObjectContents)1, (v8::internal::ScavengingVisitor<(v8::internal::MarksHandling)1, (v8::internal::LoggingAndProfiling)0>::SizeRestriction)0, 4>(v8::internal::Map*, v8::internal::HeapObject**, v8::internal::HeapObject*, int) 382 0.2% v8::internal::Heap::DoScavenge(v8::internal::ObjectVisitor*, unsigned char*)
       265   0.2% GLIBC_2.0   _IO_vfprintf
220 0.1% v8::internal::FlexibleBodyVisitor<v8::internal::NewSpaceScavenger, v8::internal::FixedArray::BodyDescriptor, int>::Visit(v8::internal::Map*, v8::internal::HeapObject*) 213 0.1% v8::internal::Heap::CopyBlock(unsigned char*, unsigned char*, int) 201 0.1% v8::internal::Deserializer::ReadChunk(v8::internal::Object**, v8::internal::Object**, int, unsigned char*)
[...]

There seems to be a lot more GC work going on. Assigning to Michael.

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to