Closed
Bug 851120
Opened 13 years ago
Closed 2 years ago
SpiderMonkey regressions in for-loop variants since Firefox 19
Categories
(Core :: JavaScript Engine, defect)
Tracking
()
RESOLVED
INCOMPLETE
People
(Reporter: djvj, Unassigned)
References
Details
(Keywords: perf, regression, reproducible)
The following set of test cases was made by Olivier Yiptong for some JS code he was writing:
http://jsperf.com/scan-max-index/3
Running it on my Macbook, latest nightly vs. release build, I got the following numbers (higher is better):
NIGHTLY
-------
forEach - 34617
Math.max.apply - 56233
for..in - 14376
for..of - 11911
for loop - 346076
FIREFOX 19
----------
forEach - 10643
Math.max.apply - 131811
for..in - 15059
for..of - 14115
for loop - 329102
In the "Math.max.apply", "for..in" and "for..of" cases, nightly is regressing compared to trunk.
Is this a hoisted "forEach" issue? I.e. the first case uses a forEach, but performs well because TI reports a single callback for it, so it's able to inline it and gain better performance. The second case also uses a forEach, but by then there are multiple callbacks on record with TI, so it's not able to inline, and so it performs worse?
Regardless, the "Math.max.apply" case is taking a huge hit going from 19 to 22. This should be looked into.
Comment 1•13 years ago
|
||
That analysis is almost certainly correct, yes.
Bug 804676 should fix this, if I understand shu and bhackett correctly.
Depends on: 804676
Comment 2•13 years ago
|
||
Comment 3•11 years ago
|
||
This bug is still relevant. Nightly 32 is still slower than Firefox 19 on the Math.max.apply and for..in tests. Nightly 32 might also be slightly slower than Firefox 29 on the forEach and for..of tests. The good news is that we're faster than Chrome on all the tests. :)
FIREFOX 19
----------
forEach = 46,372
Math.max.apply = 176,998
for..in = 17,517
for..of = 15,691
for loop = 381,710
FIREFOX 29
----------
forEach = 56,018
Math.max.apply = 162,944
for..in = 14,303
for..of = 20,824
for loop = 1,091,329
NIGHTLY 32
----------
forEach = 55,601
Math.max.apply = 138,192
for..in = 12,932
for..of = 19,193
for loop = 1,248,784
CHROME 35
---------
forEach = 31,774
Math.max.apply = 24,806
for..in = 10,360
for..of = N/A
for loop = 460,230
Summary: SpiderMonkey regressions in for-loop variants between Ffx19 and Ffx22. → SpiderMonkey regressions in for-loop variants since Firefox 19
| Assignee | ||
Updated•11 years ago
|
Assignee: general → nobody
Comment 4•10 years ago
|
||
NIGHTLY 41
----------
forEach = 34,386
Math.max.apply = 84,786
for..in = 7,160
for..of = 30,812
for loop = 184,207
CHROME 43
---------
forEach = 43,268
Math.max.apply = 13,051
for..in = 5,054
for..of = 18,050
for loop = 357,395
For some reason, 'for loop' is way slower than it used to be, at least on this testcase.
On the other hand, 'for of' got a lot faster.
Updated•3 years ago
|
Severity: normal → S3
Updated•2 years ago
|
Status: NEW → RESOLVED
Closed: 2 years ago
Resolution: --- → INCOMPLETE
You need to log in
before you can comment on or make changes to this bug.
Description
•