Warp: Improved JS performance in Firefox 83

General project discussion.
Use this as a last resort if your topic does not fit in any of the other boards but it still on-topic.
Forum rules
This General Discussion board is meant for topics that are still relevant to Pale Moon, web browsers, browser tech, UXP applications, and related, but don't have a more fitting board available.

Please stick to the relevance of this forum here, which focuses on everything around the Pale Moon project and its user community. "Random" subjects don't belong here, and should be posted in the Off-Topic board.
90Obadiah

Warp: Improved JS performance in Firefox 83

Unread post by 90Obadiah » 2020-11-14, 07:59

Introducing Warp, a.k.a WarpBuilder or SpiderMonkey/JIT compiler on steroids

More information on how warp operates plus some interesting benchmarks, on this post
https://hacks.mozilla.org/2020/11/warp- ... irefox-83/

vannilla
Moon Magic practitioner
Moon Magic practitioner
Posts: 2193
Joined: 2018-05-05, 13:29

Re: Warp: Improved JS performance in Firefox 83

Unread post by vannilla » 2020-11-14, 08:23

That's honestly interesting (though it probably is more suited for the off-topic board?), but from the name I thought it would be something special when it's only a two-pass JIT that even Guile Scheme has.

User avatar
Moonchild
Pale Moon guru
Pale Moon guru
Posts: 35631
Joined: 2011-08-28, 17:27
Location: Motala, SE
Contact:

Re: Warp: Improved JS performance in Firefox 83

Unread post by Moonchild » 2020-11-14, 10:03

Sounds like a lot of noise for something that's just a reorganization of what bytecode source gets used.
We already do multi-stage JIT; we already compile off-main-thread; we already partially use CacheIR code to feed IonMonkey, the difference is that we also use regular bytecode to create our MIR code. Yes, the drawback is that type inference requires keeping track of where everything comes from and that's overhead.

Benchmarks

What we've been doing for our decade has finally caught up with them: Global optimizations being better than specialized optimizations to satisfy synthetic benchmarks:
Warp is currently slower than Ion on certain synthetic JS benchmarks such as Octane and Kraken. This isn’t too surprising because Warp has to compete with almost a decade of optimization work and tuning for those benchmarks specifically.

We believe these benchmarks are not representative of modern JS code (see also the V8 team’s blog post on this) and the regressions are outweighed by the large speedups and other improvements elsewhere.
This doesn't have to do with "having put a decade of work in" but rather putting stress on the wrong things -- and instead of tossing out the over-specializations done to get higher scores, they just tossed it all and rearchitectured (because that's what Mozilla does these days). So all that rearchitecturing work is a 10-15% faster compilation time on page load? Not really worth it, if you ask me, but hey, nobody ever asks me ;)

Not that I agree with what they replaced their criterion-of-speed with because "Speedometer" is just another synthetic benchmark that tests only one thing and is still not real-world representative.
"Sometimes, the best way to get what you want is to be a good person." -- Louis Rossmann
"Seek wisdom, not knowledge. Knowledge is of the past; wisdom is of the future." -- Native American proverb
"Linux makes everything difficult." -- Lyceus Anubite

User avatar
Moonchild
Pale Moon guru
Pale Moon guru
Posts: 35631
Joined: 2011-08-28, 17:27
Location: Motala, SE
Contact:

Re: Warp: Improved JS performance in Firefox 83

Unread post by Moonchild » 2020-11-14, 22:08

OK, so I did some tests with Mozilla's own suite (which was conveniently recently decommissioned, I wonder why...).
Compared Firefox with WarpBuilder enabled and disabled over the wide array of different tests performed (JS, DOM, Strings, etc.).
For reference I also tossed in our generally-optimized (non-profiled) Pale Moon release build. The performance calculation is comparing between the same build of Firefox on a clean profile with warp disabled and enabled (with a restart in-between).

You can draw your own conclusions, the results are here.
"Sometimes, the best way to get what you want is to be a good person." -- Louis Rossmann
"Seek wisdom, not knowledge. Knowledge is of the past; wisdom is of the future." -- Native American proverb
"Linux makes everything difficult." -- Lyceus Anubite

vannilla
Moon Magic practitioner
Moon Magic practitioner
Posts: 2193
Joined: 2018-05-05, 13:29

Re: Warp: Improved JS performance in Firefox 83

Unread post by vannilla » 2020-11-14, 22:20

Just to make sure, higher is better, right?
Anyway that's an interesting chart, thanks for sharing.

User avatar
Moonchild
Pale Moon guru
Pale Moon guru
Posts: 35631
Joined: 2011-08-28, 17:27
Location: Motala, SE
Contact:

Re: Warp: Improved JS performance in Firefox 83

Unread post by Moonchild » 2020-11-14, 22:25

vannilla wrote:
2020-11-14, 22:20
Just to make sure, higher is better, right?
Anyway that's an interesting chart, thanks for sharing.
Yes higher is better -- this is in test runs/second as a "unit".
"Sometimes, the best way to get what you want is to be a good person." -- Louis Rossmann
"Seek wisdom, not knowledge. Knowledge is of the past; wisdom is of the future." -- Native American proverb
"Linux makes everything difficult." -- Lyceus Anubite

User avatar
jobbautista9
Keeps coming back
Keeps coming back
Posts: 784
Joined: 2020-11-03, 06:47
Location: Philippines
Contact:

Re: Warp: Improved JS performance in Firefox 83

Unread post by jobbautista9 » 2020-11-15, 02:54

Moonchild wrote:
2020-11-14, 22:08
Compared Firefox with WarpBuilder enabled and disabled over the wide array of different tests performed (JS, DOM, Strings, etc.).
Both of them are Firefox 83, right?

It would also be interesting to see a comparison between Pale Moon's current unstable build and Firefox 83 with Warp enabled and disabled.
Image

merry mimas

XUL add-ons developer. You can find a list of add-ons I manage at http://rw.rs/~job/software.html.

Mima avatar by 絵虎. Pixiv post: https://www.pixiv.net/en/artworks/15431817

Image

User avatar
adesh
Board Warrior
Board Warrior
Posts: 1277
Joined: 2017-06-06, 07:38

Re: Warp: Improved JS performance in Firefox 83

Unread post by adesh » 2020-11-15, 04:51

jobbautista9 wrote:
2020-11-15, 02:54
It would also be interesting to see a comparison between Pale Moon's current unstable build and Firefox 83 with Warp enabled and disabled.
Why? Do you think Pale Moon is going to make major changes to it's JavaScript engine in this release?

User avatar
Moonchild
Pale Moon guru
Pale Moon guru
Posts: 35631
Joined: 2011-08-28, 17:27
Location: Motala, SE
Contact:

Re: Warp: Improved JS performance in Firefox 83

Unread post by Moonchild » 2020-11-15, 10:15

jobbautista9 wrote:
2020-11-15, 02:54
Both of them are Firefox 83, right?
Actually 84.0a1, so with potential post-release improvements, but yes the exact same installed version of it.
jobbautista9 wrote:
2020-11-15, 02:54
It would also be interesting to see a comparison between Pale Moon's current unstable build and Firefox 83 with Warp enabled and disabled.
I only included Pale Moon because I found the numbers interesting to compare with Firefox (it's been a long while since I did that), the main reason I ran the tests is to compare with Warp enabled and disabled on the same installation.
"Sometimes, the best way to get what you want is to be a good person." -- Louis Rossmann
"Seek wisdom, not knowledge. Knowledge is of the past; wisdom is of the future." -- Native American proverb
"Linux makes everything difficult." -- Lyceus Anubite

New Tobin Paradigm

Re: Warp: Improved JS performance in Firefox 83

Unread post by New Tobin Paradigm » 2020-11-15, 10:36

JS wise there isn't much of a difference between Unstable and Release. Due to the slow progress on several important issues holding back the Pale Moon 29 milestone and with the second version number going into double digits we are keeping things a lot closer to trunk and not holding most things back as we normally would due to the split development scheme we had to employ.

So I expect testing Unstable wouldn't produce significant differences.

Locked