Thanks, this works, I don't get the results described though. I've tried it on several windows and linux machines but so far I wasn't able to reproduce the performance regression, the reported times are almost equal on idle machines. On machines with other users/processes working on it there is some noise but the average looks to be about equal across 20 runs. (I've recompiled r2110 and r2111 individually on each machine, except for two machines where the build segfaulted and I had to reapply r2110 to current edge, where the segfault seems to be fixed.)
2009/6/9 Erik Corry <[email protected]> > 2009/6/9 Tobias Käs <[email protected]>: > > Sounds like we are talking about different scripts. The only one I could > > The correct string-add.js isn't in the repo: > > // Completely artificial String addition benchmark. > > function benchmark() { > var x = ""; > for (var i = 0; i < 1000000; i++) { > x = x + "x"; > } > x.indexOf('x'); // Flatten string. > } > > > var elapsed = 0; > var start = new Date(); > for (var n = 0; elapsed < 2000; n++) { > benchmark(); > elapsed = new Date() - start; > } > print('Time (string-add): ' + Math.floor(1000 * elapsed/n) + ' us.'); > > > > find was test/mjsunit/string-add.js ... which doesn't seem to do any > timing > > by itself, just doing assertion checks - and the assert functions are > > defined in mjsunit.js which is why I'm getting an exception if I don't > > execute it before string-add.js > > > > Since I couldn't get any timing I added some myself in the main entry > point, > > but that obviously includes startup/shutdown. That's also why I noticed > > shell calls V8::Dispose but d8 doesn't (at least not anywhere near the > main > > entrypoint). > > > > I was trying to reproduce it on windows but I couldn't get any sensible > > values, everything drowned in the noise of startup/shutdown and was > pretty > > much random. I could also test on several debian linux boxes, but it > > probably only makes sense if I find the correct script to run. Sorry I > > couldn't be of more help, I'm still trying to find my way around in the > > project and sometimes make stupid mistakes. > > > > 2009/6/8 Anton Muhin <[email protected]> > >> > >> Good day, Tobias! > >> > >> On Sat, Jun 6, 2009 at 11:34 AM, Tobias Käs<[email protected]> > >> wrote: > >> > I noticed that shell does a V8::Dispose and d8 doesn't do this ... is > >> > that included in your timing? Also, unless you are averaging multiple > >> > runs, the total time is so small that it may be just some startup/ > >> > shutdown noise? > >> > >> I did more runs and the pattern is really stable: d8 shows almost > >> identical times every time and shell shows this 1.5 slowdown most of > >> time, but not always. > >> > >> May you elaborate a bit on V8::Dispose? Timing is just as in > >> string-add.js, so that doesn't include startup/shutdown stuff. > >> > >> > > >> > PS: Are you using modified code or is this platform-specific > >> > behaviour? I had to add mjsunit.js to the command line, otherwise I'm > >> > getting an exception. Plus I don't get any timings out of d8/shell. > >> > >> Hmm, that was on Linux and ran just fine. What's the platform you > >> experienced problems on? > >> > >> Thanks a lot and yours, > >> anton. > >> > >> > > >> > On 5 Jun., 17:09, Anton Muhin <[email protected]> wrote: > >> >> Dear v8ers, > >> >> > >> >> Erik pointed out that my r2110 dramatically reduced performance of > >> >> several benchmarks, including string-add. I compiled two versions, > >> >> with and without 2110 and they ran fine on my box. Erik suggested to > >> >> run them on newt.aar and here began the mistery: unless I misbuilt > the > >> >> stuff results look: > >> >> > >> >> ant...@newt:/home/erikcorry/b$ ~/d8-2110 string-add.js && ~/d8-2111 > >> >> string-add.js > >> >> Time (string-add): 301000 us. > >> >> Time (string-add): 301428 us. > >> >> ant...@newt:/home/erikcorry/b$ ~/d8-2110 string-add.js && ~/d8-2111 > >> >> string-add.js > >> >> Time (string-add): 301857 us. > >> >> Time (string-add): 302857 us. > >> >> ant...@newt:/home/erikcorry/b$ ~/d8-2110 string-add.js && ~/d8-2111 > >> >> string-add.js > >> >> Time (string-add): 309714 us. > >> >> Time (string-add): 306142 us. > >> >> ant...@newt:/home/erikcorry/b$ ~/d8-2110 string-add.js && ~/d8-2111 > >> >> string-add.js > >> >> Time (string-add): 300714 us. > >> >> Time (string-add): 301857 us. > >> >> ant...@newt:/home/erikcorry/b$ ~/d8-2110 string-add.js && ~/d8-2111 > >> >> string-add.js > >> >> Time (string-add): 301571 us. > >> >> Time (string-add): 300714 us. > >> >> ant...@newt:/home/erikcorry/b$ ~/d8-2110 string-add.js && ~/d8-2111 > >> >> string-add.js > >> >> Time (string-add): 302571 us. > >> >> Time (string-add): 301428 us. > >> >> ant...@newt:/home/erikcorry/b$ ~/shell-2110 string-add.js && > >> >> ~/shell-2111 string-add.js > >> >> Time (string-add): 446800 us. > >> >> Time (string-add): 302142 us. > >> >> ant...@newt:/home/erikcorry/b$ ~/shell-2110 string-add.js && > >> >> ~/shell-2111 string-add.js > >> >> Time (string-add): 306857 us. > >> >> Time (string-add): 309857 us. > >> >> ant...@newt:/home/erikcorry/b$ ~/shell-2110 string-add.js && > >> >> ~/shell-2111 string-add.js > >> >> Time (string-add): 449400 us. > >> >> Time (string-add): 303285 us. > >> >> ant...@newt:/home/erikcorry/b$ ~/shell-2110 string-add.js && > >> >> ~/shell-2111 string-add.js > >> >> Time (string-add): 436800 us. > >> >> Time (string-add): 306428 us. > >> >> ant...@newt:/home/erikcorry/b$ ~/shell-2110 string-add.js && > >> >> ~/shell-2111 string-add.js > >> >> Time (string-add): 432200 us. > >> >> Time (string-add): 304000 us. > >> >> > >> >> (r2111 rolls 2110 back, d8 and shell are corresponding binaries, > built > >> >> as scons -j4 sample=shell and scons -j4 d8 correspondingly). > >> >> > >> >> Fun facts: d8 for both 2110 and 2111 runs in same time, shell for > 2110 > >> >> usually runs 1.5 (!) longer, but sometimes (~10-20% of the cases) > >> >> identically to 2111. > >> >> > >> >> Does anyone have any idea what might have happened? Erik suggested > >> >> that things are linked somewhat differently. > >> >> > >> >> Change itself looks quite plain and it's not obvious how that can > >> >> introduce any regression: > >> >> > >> >> The only thing I can immediately see is expensive IsJSGlobalProxy, > but > >> >> why this is that instable, that'd be odd if more invocations to > >> >> IsJSGlobalProxy would lead to more GCing. > >> >> > >> >> Any ideas are most appreciated. > >> >> > >> >> tia and yours, > >> >> anton. > >> > > > > > > > > > -- > Erik Corry, Software Engineer > Google Denmark ApS. CVR nr. 28 86 69 84 > c/o Philip & Partners, 7 Vognmagergade, P.O. Box 2227, DK-1018 > Copenhagen K, Denmark. > --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
