Closed Bug 621203 Opened 15 years ago Closed 12 years ago

IonMonkey: MD5 implementation slower than v8 and JSC

Categories

(Core :: JavaScript Engine, defect)

x86
macOS
defect
Not set
normal

Tracking

()

RESOLVED WORKSFORME
Tracking Status
blocking2.0 --- .x+

People

(Reporter: bzbarsky, Unassigned)

References

Details

(Keywords: perf)

Attachments

(1 file, 1 obsolete file)

Attached file shell testcase (obsolete) —
If I run the attached shell testcase, I get these numbers: -m: 967 -j: 466 -m -j: 1165 -m -j -p: 988 So -p is helping over just -m -j, but it'd be nice to stay on trace altogether here...
So we end up blacklisting 3 loops: line 11: maybeShortLoop line 159: isCompilationExpensive is true for the nested loop with 0 ops line 48: selfOps hit 4096 Line 48 is the main md5 computation loop. Line 159 is the driver loop. It looks like isCompilationExpensive is still using >= for the "too branchy" check. I thought we changed that to use >... If I make that change, then we no longer claim to blacklist the loop on line 48, but we don't claim to trace it either. I don't know what's going on there. The time remains about the same. I also just realized, btw, that the testcase is somewhat broken. I'll post a fixed version, but all of the above analysis still applies.
Requesting blocking, since this is a JM regression, btw.
blocking2.0: --- → ?
Keywords: regression
Attached file Fixed shell testcase
Attachment #499556 - Attachment is obsolete: true
In the fixed testcase, there's more going on, but the key part is blacklisting the line 48 loop because it has too many self ops... But even if I bump the max op count to 16384 (in which case we're ok, because this thing only has about 6000 self ops), so that we decide to trace at line 48, I still see us being way slower with -m -j -p than with pure -j.... due to the fact that we blacklisted line 11 for being a maybe short loop and then didn't unblacklist it when we decided to trace the loop on 159. Then we end up aborting over and over on the main driver loop due to not having a compatible tree on 11. Bill, you have a bunch of profiler changes pending landing, right? I suppose I should remeasure here once you land those....
(In reply to comment #4) > Bill, you have a bunch of profiler changes pending landing, right? I suppose I > should remeasure here once you land those.... Yeah, I want to get to that next week. I'll see how this bug fares after those land.
Assignee: general → wmccloskey
Status: NEW → ASSIGNED
I suggest that perf regressions should block at this point only if they affect a key benchmark or web site.
blocking2.0: ? → .x
Everything landed and this is still slow :-(. In fact, I see even worse numbers that Boris: -m: 4863ms -mj: 930ms -mjp: 4613ms Since it's not a blocker, I'm going to put this on hold.
Those numbers are about what I see on the "Fixed shell testcase" testcase. The numbers in comment 0 were on the "shell testcase" testcase, which comment 1 describes as "somewhat broken". ;)
Assignee: wmccloskey → general
Current js shell results for the fixed testcase: Interp: 73055 TM: 1949 (from 2011-10-01 nightly) JM: 9565 JM+TI: 2803 d8: 4959 JM+TI is about 2x faster than v8. However, TM was about 1.4x faster than JM+TI. Changing the title to better reflect the current state of things.
Blocks: 467263
Status: ASSIGNED → NEW
Summary: MD5 implementation slower with -mjp than just with -j → JM+TI: MD5 implementation slower with -m -n than just with -j
Current numbers on my rMBP@2.7Ghz: SM: 2216 (with no arguments) JSC: 1776 d8: 875 So, we're quite a bit slower than the competition, now. Changing the title to better reflect the current state of things.
Summary: JM+TI: MD5 implementation slower with -m -n than just with -j → IonMonkey: MD5 implementation slower than v8 and JSC
Keywords: regressionperf
This is resoundingly fixed: SM: 435 JSC: 1019 d8: 718
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: