Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign upInvestigate performance of Octane in Servo vs. Firefox #10720
Comments
|
Is there any noticeable difference if we disable incremental GC in Firefox? |
|
The spreadsheet is updated. GeckoNoInc is clean profile of Nightly39 with javascript.options.mem.gc_incremental = false. Here's the comparison with ServoPlus and GeckoNoInc:
|
|
It would be useful if someone else also tried to reproduce these numbers to rule out measurement error. I'd just run Servo master vs. FF39 with incremental GC disabled and skip the other versions. |
|
I have rerun these tests with js-shell from mozilla-central and mozjs-shell. Here are the results:
The numbers reported are the median scores over 10 runs. Note that incremental GC is enabled in both. |
|
@tschneidereit I'm unsure how worried or not worried to be about the numbers, but it certainly seems like something is wrong with SplayLatency and perhaps EarleyBoyer and Splay. At least the remaining ones are within 10% or so. |
|
@metajack, how do the numbers with iGC compare to those without? Both in m-c shell and mozjs shell. What I'm getting at is: do we know for certain that iGC works as expected? I do think that we should be somewhat concerned about this, because the tests we do badly on all hammer on GC performance, and that's an area that's especially important for Servo because eagerly creating reflectors means that we cause more GC traffic than FF would. |
|
I tried retesting this using the latest versions of Servo and Firefox.
Most results are similar to each other aside from a few. Notably SplayLatency is significantly slower in Servo than it is in Firefox. |
Since we use the same JS engine as Firefox, we should expect roughly equivalent performance on JS benchmarks. I decided to investigate to verify this was true, and was a little surprised by the results.
My data is collected here:
https://docs.google.com/spreadsheets/d/1NjhzcLVSv1vyf_n7EOdZOkOXrdQ4z0I8T1Q8thXbhmU/edit
I used the last published Firefox 39 nightly since current Servo master uses SM39. Servo in that data is master just before https://docs.google.com/spreadsheets/d/1NjhzcLVSv1vyf_n7EOdZOkOXrdQ4z0I8T1Q8thXbhmU/edit#gid=0 and ServoPlus is servo master from a few days ago.
The interesting comparison is in the Stats tab, which shows relative performance between pairs. For ServoPlus vs. Gecko, here are the numbers:
Mandreel 22.29%
Deltablue 50.96%
MandreelLatency 53.99%
Richards 56.70%
EarleyBoyer 75.04%
Raytrace 77.76%
Total 85.35%
Crypto 88.91%
Regexp 98.22%
NavierStokes 100.66%
zlib 102.48%
Box2D 106.50%
SplayLatency 108.46%
Typescript 116.62%
Splay 116.71%
CodeLoad 116.97%
pdf.js 132.40%
Gameboy 135.85%
In some tests, we are very slow compared to Firefox, and in some quite a bit faster. This bug is for investigation into why this discrepancy exists. I suggest starting Mandreel and Gameboy as those are the most extreme examples.
One possible contributing factor is that current Servo does not enable incremental GC, and Firefox does.