sql.js with inlining much slower than without
Categories
(Core :: JavaScript Engine, defect)
Tracking
()
People
(Reporter: azakai, Unassigned)
References
Details
Attachments
(1 file)
1.48 MB,
application/zip
|
Details |
Reporter | ||
Comment 1•13 years ago
|
||
Comment 2•13 years ago
|
||
Reporter | ||
Comment 3•13 years ago
|
||
Assignee | ||
Updated•11 years ago
|
Updated•3 years ago
|
Comment 4•1 years ago
•
|
||
I did a Nightly vs Chrome comparison (jnstead of the original idea of "noinline" vs "inline" on Firefox). Here are the results:
"Benchmark"
Nightly: https://share.firefox.dev/3wyHaJi (7s)
Chrome: https://share.firefox.dev/3SU4nx5 (4.4s)
"Benchmark-noinline"
Nightly: https://share.firefox.dev/49OMqXr (2.8s)
Chrome: https://share.firefox.dev/3TfBXyW (1.5s)
Nightly is ~2x slower in both cases, and spends majority of time in Baseline. So my guess is the testcases must be doing something that is not recommended anymore.
:iain : Worthwhile to investigate here, or should we just close this as INCOMPLETE?
Comment 5•1 years ago
|
||
FWIW, both the testcases print the timings of their benchamrking. For each, the major difference is in "Insert" operation :
benchamrk-noinline - Nightly: Chrome :: 1098ms:319ms
benchmark - Nightly: Chrome ::4432ms:1417ms
Comment 6•1 years ago
|
||
This code was created via Emscripten, which generally targets JS features that are well supported. I suspect that the actual problem is that the functions being created are over the Ion size limit. Taking a quick peek with IONFLAGS=aborts
, I see three aborted compilations with inlining, and one without inlining.
I'm not aware of real webpages that regularly hit the Ion size limit. The smallest of the aborting functions is 6K lines long and has 1.7K local variables. Given that both Chrome and Firefox slow down on the version with inlining, we're not alone in having difficulty with this.
On the modern web, this code would be compiled to target wasm, not JS.
I think we can go ahead and close this.
Description
•