Closed
Bug 1103441
Opened 10 years ago
Closed 9 years ago
Firefox is nearly 10X slower than Chrome when running ActionScript3 V8 benchmarks in Shumway.
Categories
(Core :: JavaScript Engine, defect)
Tracking
()
RESOLVED
FIXED
People
(Reporter: mbx, Unassigned)
References
(Depends on 1 open bug)
Details
(Keywords: perf)
Attachments
(6 files)
To run the test, un-zip and run:
js build/ts/shell.js -x v8.swf
FF: Richards 357
Chrome: Richards 2994
Safari: Richards 2416
I've only provided a shell test for SpiderMonkey, if needed I can also provide a browser test case.
Comment 1•10 years ago
|
||
I did a Gecko Profiler run on an almost-identical browser version:
http://people.mozilla.org/~bgirard/cleopatra/#report=04b86f855e7d929bfca78ee7d7849f147174b5c8
Contains other stuff, too, but the block from ~2850ms to ~4000ms is Richards.
One thing that jumps out is that we spend a lot of time dealing with ICs, and almost 20% of all time under ArgumentsObject::createForIon. Sadly, I can't see the function causing that, but I have a few ideas.
Comment 2•10 years ago
|
||
In https://github.com/mozilla/shumway/pull/1881, I removed the Arguments object allocations that showed up in the profile. That improved the score on the above benchmark to about 500, and that in the original v8 benchmark to about 3500 (with Chrome Canary getting 5200 and Safari getting 2700).
I still see lots of time, about 30%, under GetPropertyIC::update: http://people.mozilla.org/~bgirard/cleopatra/#report=80e631226740b397f49fbb2bd4fedc1a29e29934
Comment 3•10 years ago
|
||
It looks like our Ion ICs might constantly be using the fallback stub (maybe after filling all the stubs or not).
Updated•10 years ago
|
Flags: needinfo?(jdemooij)
Comment 4•10 years ago
|
||
We spend a ton of time in GetPropertyIC stubs, almost all of that is here:
avm.js:19629: if (value._isLazyInitializer) {
`value` is polymorphic and we give up attaching new IC stubs :( Also, a third of the VM time here is GetPropertyHelperInline triggering warnings if the property is not found (cx->currentScript is slow for Ion code). We should stop doing that somehow.
If I change that line to
if (isLazyConstant(value)) {
We're > 8x faster.
Comment 5•10 years ago
|
||
(In reply to Jan de Mooij [:jandem] from comment #4)
> Also, a third of the VM time here is GetPropertyHelperInline triggering warnings if
> the property is not found (cx->currentScript is slow for Ion code). We
> should stop doing that somehow.
Filed bug 1106982. That patch does not really fix the performance problem but it does help a bit.
Reporter | ||
Comment 6•10 years ago
|
||
Reporter | ||
Comment 7•10 years ago
|
||
Reporter | ||
Comment 8•10 years ago
|
||
Reporter | ||
Comment 9•10 years ago
|
||
Reporter | ||
Comment 10•10 years ago
|
||
Updated•10 years ago
|
Flags: needinfo?(jdemooij)
Updated•10 years ago
|
Blocks: shumway-fb2
Keywords: perf
Comment 11•10 years ago
|
||
Deltablue is the biggest problem now (28x slower) followed by Raytrace (5-6x slower). Raytrace is affected by __proto__ (bug 1108444), will look into Deltablue tomorrow.
Updated•10 years ago
|
No longer blocks: shumway-fb2
Updated•10 years ago
|
Blocks: shumway-m4
Comment 12•9 years ago
|
||
This is well and truly fixed: the last results on awfy before we ripped out the Shumway JIT this was filed for were all substantially better in SpiderMonkey than in V8:
http://arewefastyet.com/#machine=28&view=breakdown&suite=shumway
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•