Open Bug 1870552 Opened 5 months ago Updated 4 months ago

JS demo at https://turbowarp.org/907856776?fps=60&turbo is 5x slower in Nightly compared to Chrome and spends a lot of time in Baseline

Categories

(Core :: JavaScript Engine, task, P3)

task

Tracking

()

People

(Reporter: mayankleoboy1, Unassigned)

References

(Depends on 1 open bug, Blocks 1 open bug, )

Details

Go to https://turbowarp.org/907856776?fps=60&turbo
Let it load
The rendering should start immediately.
For a more stress-test, set the number of iterations to maximum, and click on the "Rerender" button on the bottom right.

Nightly: https://share.firefox.dev/481SUC3 (34s)
Chrome: https://share.firefox.dev/3RJNENI (6.5s)

I suspect that the demo is using "eval" based on this line from the profiler "gen2_render [https://turbowarp.org/js/vendorseditorembedfullscreenplayer.e5a7260040dd29fef52d.js line 59 > Function:87:30] "

Feel free to WONTFIX

Summary: JS demo at https://turbowarp.org/907856776?fps=60&turbo is 5x slower in Nightly compared to Chrome and spends a lot of time in Baselione → JS demo at https://turbowarp.org/907856776?fps=60&turbo is 5x slower in Nightly compared to Chrome and spends a lot of time in Baseline

If you disable the turbocompiler* in the demo and then run the demos, the results are maybe more interesting -code runs 100% in ion, but is slower than Chrome

Nightly: https://share.firefox.dev/4aqLTwc (2m 24s with the profiler, 2m without the profiler)
Chrome: https://share.firefox.dev/3RL0riG (1m 17s)

*You can disable the compiler thusly : menu bar at top ->advanced-> Check the "Disable Compiler" ->Save settings in project-> rerun the demo

Severity: -- → N/A
Priority: -- → P3

In the profile in comment 0 we spend quite a lot of time under JitRuntime::allocateIonOsrTempData. NI myself to see if this is hitting an unexpected perf cliff.

Flags: needinfo?(jdemooij)

(In reply to Jan de Mooij [:jandem] from comment #2)

In the profile in comment 0 we spend quite a lot of time under JitRuntime::allocateIonOsrTempData. NI myself to see if this is hitting an unexpected perf cliff.

This seems to be caused by generators because we can enter Ion/Warp only with OSR. We should fix that at some point.

Short-term, we can fix JitRuntime::allocateIonOsrTempData to reuse the previous buffer if it's big enough. That gets rid of millions of free/malloc calls here.

Depends on: 1317690
Flags: needinfo?(jdemooij)
Depends on: 1874179

21% improvement from patches in bug 1874179 !
Without : https://share.firefox.dev/4aWZYlo (29s)
With: https://share.firefox.dev/3RQkETc (23s)

Profile with (In reply to Mayank Bansal from comment #1)

If you disable the turbocompiler* in the demo and then run the demos, the results are maybe more interesting -code runs 100% in ion, but is slower than Chrome

Nightly: https://share.firefox.dev/4aqLTwc (2m 24s with the profiler, 2m without the profiler)
Chrome: https://share.firefox.dev/3RL0riG (1m 17s)

*You can disable the compiler thusly : menu bar at top ->advanced-> Check the "Disable Compiler" ->Save settings in project-> rerun the demo

New profile : https://share.firefox.dev/3Sgupuj (1m15s)
Chrome: https://share.firefox.dev/4aX0DTU (1m8s)

Jan: Anything interesting in the "turbocompiler disabled" version?

(In reply to Mayank Bansal from comment #5)

Jan: Anything interesting in the "turbocompiler disabled" version?

I don't see anything very obvious. Some time for megamorphic has-prop. Most time is just running JIT code.

You need to log in before you can comment on or make changes to this bug.