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