Hi Jakob,

Yes, you're right. It was because of the debug build. Switching to the 
release version sped things up considerably.
Thanks! That was a quick fix :)

Regards,
Danny


On Tuesday, March 24, 2015 at 11:09:27 AM UTC+2, Jakob Kummerow wrote:
>
> The profile for the "slow transaction" doesn't really say anything other 
> than that the C++ compiler didn't do any inlining (probably due to 
> oprofile, or was this a Debug build, or both?).
>
>
> On Tue, Mar 24, 2015 at 9:50 AM, Toon Verwaest <verw...@chromium.org 
> <javascript:>> wrote:
>
>> If your transactional scripts contain function declarations that you 
>> instantiate, even if they are global, you'll inadvertantly cause 
>> polymorphism on the second run. That will slow down significantly. You can 
>> avoid this by only rerunning scripts that call/instantiate existing 
>> functions. Alternatively you can turn off the compilation cache; which will 
>> help with runtime (not load time though) if you reload all scripts.
>>
>> (Btw, you might want to turn off handle zapping as well...)
>>
>> Hth,
>> Toon
>>
>> On Tue, Mar 24, 2015, 09:29 Danny Dorfman <wilder...@gmail.com 
>> <javascript:>> wrote:
>>
>>> Hello there,
>>>
>>> I have an issue with some code running JavaScript under V8, The code 
>>> runs in a *single* Isolate, that has *one* context.
>>> The context is created, populated with some scripts, the scripts are 
>>> executed, and then the context is Exit()ed. The Isolate stays intact.
>>> The above sequence repeats itself several times, with the *same* 
>>> scripts running time and again. This is what I call a series of 
>>> "transactions".
>>>
>>> What happens, is after the initial transaction is executed, all the 
>>> subsequent ones experience a drastic slowdown (sometimes 7 times slower).
>>> I tried profiling the code with* oprofile*, and I see this picture:
>>>
>>> *Fast transaction:*
>>> PU: Intel Ivy Bridge microarchitecture, speed 3401 MHz (estimated)
>>> Counted CPU_CLK_UNHALTED events (Clock cycles when not halted) with a 
>>> unit mask of 0x00 (No unit mask) count 100000
>>> samples  %        image name           symbol name
>>> 2444      1.8590  libv8.so                 
>>> v8::internal::HandleScope::ZapRange(v8::internal::Object**, 
>>> v8::internal::Object**)
>>> 1849      1.4064  libv8.so                 
>>> v8::internal::HeapObject::map() const
>>> 1537      1.1691  libv8.so                 v8::base::NoBarrier_Load(long 
>>> const volatile*)
>>> 1417      1.0778  libv8.so                 
>>> v8::internal::SmiTagging<8ul>::SmiToInt(v8::internal::Object const*)
>>> 1286      0.9782  libv8.so                 
>>> v8::internal::FixedArrayBase::length() const
>>> 1273      0.9683  libpthread-2.13.so   pthread_getspecific
>>> 1250      0.9508  libv8.so                 
>>> v8::internal::MapWord::MapWord(unsigned long)
>>> 1235      0.9394  libv8.so                 
>>> v8::internal::FixedArray::get(int) const
>>> 1171      0.8907  libv8.so                 v8::base::Acquire_Load(long 
>>> const volatile*)
>>> 1029      0.7827  libv8.so                 void 
>>> v8::base::CallOnce<void>(long*, v8::base::OneArgFunction<void*>::type, 
>>> void*)
>>> 1021      0.7766  libv8.so                 
>>> v8::internal::HeapObject::map_word() const
>>> .....
>>>
>>> *Slow transaction:*
>>> CPU: Intel Ivy Bridge microarchitecture, speed 3401 MHz (estimated)
>>> Counted CPU_CLK_UNHALTED events (Clock cycles when not halted) with a 
>>> unit mask of 0x00 (No unit mask) count 100000
>>> samples  %        image name           symbol name
>>> 27474     8.4737  libv8.so                 
>>> v8::internal::HeapObject::map() const
>>> 17271     5.3268  libv8.so                 
>>> v8::internal::MapWord::MapWord(unsigned long)
>>> 15862     4.8923  libv8.so                 
>>> v8::internal::Map::instance_type()
>>> 14754     4.5505  libv8.so                 v8::base::NoBarrier_Load(long 
>>> const volatile*)
>>> 13941     4.2998  libv8.so                 
>>> v8::internal::HeapObject::map_word() const
>>> 13573     4.1863  libv8.so                 
>>> v8::internal::MapWord::FromRawValue(unsigned long)
>>> 11299     3.4849  libv8.so                 
>>> v8::internal::Internals::HasHeapObjectTag(v8::internal::Object const*)
>>> 10365     3.1968  libv8.so                 
>>> v8::internal::Object::IsInternalizedString() const
>>> 8469      2.6121  libv8.so                 
>>> v8::internal::HeapObject::cast(v8::internal::Object const*)
>>> 8085      2.4936  libv8.so                 
>>> v8::internal::Object::IsHeapObject() const
>>> 6350      1.9585  libv8.so                 
>>> v8::internal::Object::IsOddball() const
>>> 6105      1.8829  libv8.so                 
>>> v8::internal::Embedded::Embedded()
>>> 5777      1.7818  libv8.so                 
>>> v8::internal::MapWord::ToRawValue()
>>> 5670      1.7488  libv8.so                 v8::internal::MapWord::ToMap()
>>> ...
>>>
>>> Any idea what is happening here? Why is the same code running so slowly 
>>> the second (third, etc) time around?
>>>
>>> Regards,
>>> Danny
>>>
>>> -- 
>>> -- 
>>> v8-users mailing list
>>> v8-u...@googlegroups.com <javascript:>
>>> 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 v8-users+u...@googlegroups.com <javascript:>.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>  -- 
>> -- 
>> v8-users mailing list
>> v8-u...@googlegroups.com <javascript:>
>> 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 v8-users+u...@googlegroups.com <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
-- 
v8-users mailing list
v8-users@googlegroups.com
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 v8-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to