Closed Bug 542625 Opened 15 years ago Closed 2 years ago

Poor performance on freeciv benchmark

Categories

(Core :: JavaScript Engine, defect)

x86
macOS
defect

Tracking

()

RESOLVED INCOMPLETE

People

(Reporter: bzbarsky, Unassigned)

Details

Sorry for the suck state of the testcase, but the STR are at http://code.google.com/p/freeciv-forever/wiki/FreecivBenchmarkResults#How_the_benchmark_was_performed I ran a quick profile, and here's the skinny: 36% in js_Interpret 10% under canvas drawImage 10% leaving/entering jit code 5% running jit code And a pretty long tail of js_NewArrayObject, js_AllocSlot, getting properties, setting properties on arrays, js_NewObject, etc, etc adding up to about 20%, none of it more than about 3% of total.
Unfortunately, I can only get jitstats for the whole process of logging in, starting a game, etc. I wish we had a way to reset them. :( Lots of aborts on "no compatible inner tree", lots of apply, lots of getelem. The aborts by type with their counts: 138 No compatible inner tree. 74 apply. 55 Inner tree is trying to grow, abort outer recording. 32 regexp. 32 getelem. 30 eq. 12 LeaveFrame. 11 delelem. 9 SetPropHit. 8 return. 8 getlocalprop. 8 getargprop. 7 elemdec. 7 Inner tree not suitable for calling. 5 EnterFrame. 4 name. 4 DEFLOCALFUN for closure. 3 getprop. 3 Inner tree is trying to stabilize, abort outer recording. 2 setrval. 2 setprop. 2 callname. 2 callelem. 2 attempt to reenter interpreter while recording. 2 argcnt. 2 Inner tree is an unsupported type of recursion.
Oh, and the actual stats: recorder: started(1190), aborted(464), completed(2022), different header(0), trees trashed(1), slot promoted(0), unstable loop variable(942), breaks(28), returns(33), merged loop exits(444), unstableInnerCalls(138), blacklisted(42) monitor: exits(1349205), timeouts(12), type mismatch(0), triggered(1349217), global mismatch(53), flushed(53)
Assignee: general → nobody
Severity: normal → S3
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.