MAY
22
2008

News from the land of Konquerors

A bunch of exciting things have happened to Konqueror in preparation for 4.1 Beta 1 this weekend.

First of all, KHTML guru Germain Garand has committed the bulk of the designMode/contentEditable editing code. It's not 100% done yet, but it's a monumental amount of work, and it should enable the various rich-text editor apps to work in KHTML.

In the UI land, Eduardo Elvira has committed some fancy session management features such as crash recovery.

But, I am gonna be bit a bit selfish, and mostly talk about what I did: my performance/bytecode version of KJS - KJS "Frostbyte" - is now in kdelibs trunk, and part of KDE4.1 Beta 1. This brings some significant pure ES performance improvements over previous versions, and lets us put up some great numbers. On the SunSpider benchmark suite, this version does:

  • 2.27x better than Firefox 2
  • 2x better than QtWebKit from Qt4.4
  • About 1.4x faster than KJS 4.0 "Blizzard"
  • About 1.152x faster overall than Opera 9.5 beta 2, but it's really a wash, with both engines winning lots of individual benchmarks...

.. but about 1.77x slower than Firefox 3rc1. Ouch. Well, at least we beat them on Acid3, and it might just keep my head from getting too big. Great job by the Mozilla guys there, though. And the Apple guys of course aren't standing still either --- the development versions of JavaScriptCore/Safari have excellent optimizations we lack, and will likely be getting their own bytecode engine, SquirrelFish, soon (I name things after weather. They name them after weird animals. I think you can see who lives in California, and who lives in New York State).

Thankfully, I have some tricks left up my sleeve. Which isn't very comfortable, since I am wearing a t-shirt.

And if you care, or are really bored, the numbers are under the cut.


vs. Firefox 2:
TEST                   COMPARISON            FROM                 TO             DETAILS

=============================================================================

** TOTAL **:           2.27x as fast     16813.0ms +/- 0.7%   7409.6ms +/- 4.3%     significant

=============================================================================

  3d:                  2.92x as fast      2612.4ms +/- 0.6%    895.8ms +/- 7.5%     significant
    cube:              2.08x as fast       669.2ms +/- 2.0%    321.0ms +/- 9.9%     significant
    morph:             5.28x as fast      1531.0ms +/- 0.5%    290.2ms +/- 5.9%     significant
    raytrace:          1.45x as fast       412.2ms +/- 0.5%    284.6ms +/- 6.7%     significant

  access:              1.60x as fast      1496.6ms +/- 3.9%    933.2ms +/- 4.8%     significant
    binary-trees:      1.81x as fast       271.8ms +/- 18.3%    150.4ms +/- 2.1%     significant
    fannkuch:          ??                  350.2ms +/- 6.5%    350.6ms +/- 1.9%     not conclusive: might be *1.001x as slow*
    nbody:             1.80x as fast       636.2ms +/- 0.8%    353.2ms +/- 11.7%     significant
    nsieve:            3.02x as fast       238.4ms +/- 0.6%     79.0ms +/- 1.1%     significant

  bitops:              4.51x as fast      4300.6ms +/- 2.6%    952.8ms +/- 2.2%     significant
    3bit-bits-in-byte: 2.41x as fast       334.2ms +/- 0.5%    138.6ms +/- 6.8%     significant
    bits-in-byte:      1.67x as fast       303.8ms +/- 0.8%    182.0ms +/- 5.0%     significant
    bitwise-and:       7.34x as fast      3383.0ms +/- 3.1%    460.6ms +/- 3.7%     significant
    nsieve-bits:       1.63x as fast       279.6ms +/- 2.2%    171.6ms +/- 3.8%     significant

  controlflow:         *1.055x as slow*    185.0ms +/- 0.5%    195.2ms +/- 1.6%     significant
    recursive:         *1.055x as slow*    185.0ms +/- 0.5%    195.2ms +/- 1.6%     significant

  crypto:              1.38x as fast       690.2ms +/- 0.5%    499.2ms +/- 2.1%     significant
    aes:               1.68x as fast       258.4ms +/- 0.9%    153.6ms +/- 1.4%     significant
    md5:               1.21x as fast       213.0ms +/- 0.4%    175.6ms +/- 2.4%     significant
    sha1:              1.29x as fast       218.8ms +/- 0.5%    170.0ms +/- 3.2%     significant

  date:                2.36x as fast      1960.2ms +/- 0.6%    831.6ms +/- 3.7%     significant
    format-tofte:      2.07x as fast       768.2ms +/- 0.2%    371.4ms +/- 3.4%     significant
    format-xparb:      2.59x as fast      1192.0ms +/- 0.9%    460.2ms +/- 4.1%     significant

  math:                1.55x as fast      1466.8ms +/- 0.8%    947.8ms +/- 7.0%     significant
    cordic:            1.49x as fast       555.8ms +/- 1.4%    373.4ms +/- 6.7%     significant
    partial-sums:      1.71x as fast       594.2ms +/- 1.5%    348.0ms +/- 7.4%     significant
    spectral-norm:     1.40x as fast       316.8ms +/- 0.5%    226.4ms +/- 7.1%     significant

  regexp:              1.125x as fast      514.8ms +/- 0.6%    457.4ms +/- 0.7%     significant
    dna:               1.125x as fast      514.8ms +/- 0.6%    457.4ms +/- 0.7%     significant

  string:              2.11x as fast      3586.4ms +/- 0.4%   1696.6ms +/- 4.8%     significant
    base64:            3.75x as fast       995.8ms +/- 0.9%    265.6ms +/- 10.7%     significant
    fasta:             1.57x as fast       683.2ms +/- 0.6%    434.6ms +/- 2.6%     significant
    tagcloud:          1.58x as fast       491.2ms +/- 1.4%    310.4ms +/- 2.8%     significant
    unpack-code:       3.21x as fast      1080.0ms +/- 0.3%    336.6ms +/- 4.7%     significant
    validate-input:    *1.039x as slow*    336.2ms +/- 0.2%    349.4ms +/- 5.2%     significant

vs. QtWebKit 4.4:
=============================================================================

** TOTAL **:           2.02x as fast     14941.0ms +/- 0.3%   7409.6ms +/- 4.3%     significant

=============================================================================

  3d:                  2.21x as fast      1982.4ms +/- 0.5%    895.8ms +/- 7.5%     significant
    cube:              1.94x as fast       621.2ms +/- 0.4%    321.0ms +/- 9.9%     significant
    morph:             2.71x as fast       787.2ms +/- 0.7%    290.2ms +/- 5.9%     significant
    raytrace:          2.02x as fast       574.0ms +/- 0.8%    284.6ms +/- 6.7%     significant

  access:              2.93x as fast      2733.2ms +/- 0.4%    933.2ms +/- 4.8%     significant
    binary-trees:      1.60x as fast       240.4ms +/- 0.6%    150.4ms +/- 2.1%     significant
    fannkuch:          3.30x as fast      1155.4ms +/- 0.8%    350.6ms +/- 1.9%     significant
    nbody:             1.63x as fast       575.6ms +/- 0.3%    353.2ms +/- 11.7%     significant
    nsieve:            9.64x as fast       761.8ms +/- 0.4%     79.0ms +/- 1.1%     significant

  bitops:              2.65x as fast      2520.4ms +/- 1.0%    952.8ms +/- 2.2%     significant
    3bit-bits-in-byte: 3.77x as fast       522.0ms +/- 0.6%    138.6ms +/- 6.8%     significant
    bits-in-byte:      3.64x as fast       663.2ms +/- 1.2%    182.0ms +/- 5.0%     significant
    bitwise-and:       1.34x as fast       617.0ms +/- 3.8%    460.6ms +/- 3.7%     significant
    nsieve-bits:       4.19x as fast       718.2ms +/- 1.0%    171.6ms +/- 3.8%     significant

  controlflow:         1.73x as fast       337.2ms +/- 0.7%    195.2ms +/- 1.6%     significant
    recursive:         1.73x as fast       337.2ms +/- 0.7%    195.2ms +/- 1.6%     significant

  crypto:              2.55x as fast      1270.8ms +/- 0.5%    499.2ms +/- 2.1%     significant
    aes:               2.30x as fast       353.6ms +/- 0.4%    153.6ms +/- 1.4%     significant
    md5:               2.65x as fast       465.4ms +/- 0.6%    175.6ms +/- 2.4%     significant
    sha1:              2.66x as fast       451.8ms +/- 0.7%    170.0ms +/- 3.2%     significant

  date:                2.10x as fast      1742.6ms +/- 0.3%    831.6ms +/- 3.7%     significant
    format-tofte:      1.52x as fast       563.0ms +/- 0.3%    371.4ms +/- 3.4%     significant
    format-xparb:      2.56x as fast      1179.6ms +/- 0.3%    460.2ms +/- 4.1%     significant

  math:                1.86x as fast      1761.0ms +/- 0.4%    947.8ms +/- 7.0%     significant
    cordic:            2.59x as fast       968.8ms +/- 0.6%    373.4ms +/- 6.7%     significant
    partial-sums:      1.160x as fast      403.8ms +/- 0.5%    348.0ms +/- 7.4%     significant
    spectral-norm:     1.72x as fast       388.4ms +/- 0.9%    226.4ms +/- 7.1%     significant

  regexp:              *1.069x as slow*    427.8ms +/- 0.7%    457.4ms +/- 0.7%     significant
    dna:               *1.069x as slow*    427.8ms +/- 0.7%    457.4ms +/- 0.7%     significant

  string:              1.28x as fast      2165.6ms +/- 0.3%   1696.6ms +/- 4.8%     significant
    base64:            1.98x as fast       526.4ms +/- 0.2%    265.6ms +/- 10.7%     significant
    fasta:             1.33x as fast       579.8ms +/- 0.5%    434.6ms +/- 2.6%     significant
    tagcloud:          1.187x as fast      368.4ms +/- 1.6%    310.4ms +/- 2.8%     significant
    unpack-code:       -                   339.6ms +/- 0.5%    336.6ms +/- 4.7%
    validate-input:    -                   351.4ms +/- 0.2%    349.4ms +/- 5.2%

vs Opera 9.5b2:
TEST                   COMPARISON            FROM                 TO             DETAILS

=============================================================================

** TOTAL **:           1.152x as fast    8538.4ms +/- 0.5%   7409.6ms +/- 4.3%     significant

=============================================================================

  3d:                  *1.110x as slow*   807.0ms +/- 1.6%    895.8ms +/- 7.5%     significant
    cube:              *1.37x as slow*    234.0ms +/- 3.6%    321.0ms +/- 9.9%     significant
    morph:             1.142x as fast     331.4ms +/- 2.2%    290.2ms +/- 5.9%     significant
    raytrace:          *1.178x as slow*   241.6ms +/- 1.5%    284.6ms +/- 6.7%     significant

  access:              1.193x as fast    1113.4ms +/- 0.8%    933.2ms +/- 4.8%     significant
    binary-trees:      *1.81x as slow*     83.0ms +/- 2.4%    150.4ms +/- 2.1%     significant
    fannkuch:          1.57x as fast      548.8ms +/- 0.2%    350.6ms +/- 1.9%     significant
    nbody:             *1.45x as slow*    243.0ms +/- 0.9%    353.2ms +/- 11.7%     significant
    nsieve:            3.02x as fast      238.6ms +/- 1.7%     79.0ms +/- 1.1%     significant

  bitops:              1.21x as fast     1154.0ms +/- 1.2%    952.8ms +/- 2.2%     significant
    3bit-bits-in-byte: *1.23x as slow*    113.0ms +/- 0.8%    138.6ms +/- 6.8%     significant
    bits-in-byte:      ??                 179.0ms +/- 2.4%    182.0ms +/- 5.0%     not conclusive: might be *1.017x as slow*
    bitwise-and:       1.21x as fast      557.2ms +/- 1.1%    460.6ms +/- 3.7%     significant
    nsieve-bits:       1.78x as fast      304.8ms +/- 2.1%    171.6ms +/- 3.8%     significant

  controlflow:         *1.72x as slow*    113.2ms +/- 2.1%    195.2ms +/- 1.6%     significant
    recursive:         *1.72x as slow*    113.2ms +/- 2.1%    195.2ms +/- 1.6%     significant

  crypto:              *1.070x as slow*   466.4ms +/- 1.2%    499.2ms +/- 2.1%     significant
    aes:               1.41x as fast      217.2ms +/- 1.0%    153.6ms +/- 1.4%     significant
    md5:               *1.41x as slow*    124.2ms +/- 2.9%    175.6ms +/- 2.4%     significant
    sha1:              *1.36x as slow*    125.0ms +/- 1.4%    170.0ms +/- 3.2%     significant

  date:                1.27x as fast     1054.0ms +/- 0.8%    831.6ms +/- 3.7%     significant
    format-tofte:      -                  378.2ms +/- 1.1%    371.4ms +/- 3.4%
    format-xparb:      1.47x as fast      675.8ms +/- 0.7%    460.2ms +/- 4.1%     significant

  math:                *1.36x as slow*    699.4ms +/- 0.7%    947.8ms +/- 7.0%     significant
    cordic:            *1.23x as slow*    302.8ms +/- 1.1%    373.4ms +/- 6.7%     significant
    partial-sums:      *1.34x as slow*    259.0ms +/- 1.7%    348.0ms +/- 7.4%     significant
    spectral-norm:     *1.65x as slow*    137.6ms +/- 1.8%    226.4ms +/- 7.1%     significant

  regexp:              2.24x as fast     1024.0ms +/- 0.5%    457.4ms +/- 0.7%     significant
    dna:               2.24x as fast     1024.0ms +/- 0.5%    457.4ms +/- 0.7%     significant

  string:              1.24x as fast     2107.0ms +/- 0.8%   1696.6ms +/- 4.8%     significant
    base64:            *1.40x as slow*    190.0ms +/- 2.4%    265.6ms +/- 10.7%     significant
    fasta:             -                  434.4ms +/- 1.3%    434.6ms +/- 2.6%
    tagcloud:          1.24x as fast      383.4ms +/- 0.7%    310.4ms +/- 2.8%     significant
    unpack-code:       2.63x as fast      883.6ms +/- 1.2%    336.6ms +/- 4.7%     significant
    validate-input:    *1.62x as slow*    215.6ms +/- 1.7%    349.4ms +/- 5.2%     significant

vs Firefox 3.0rc1:
EST                   COMPARISON            FROM                 TO             DETAILS

=============================================================================

** TOTAL **:           *1.77x as slow*   4178.4ms +/- 2.0%   7409.6ms +/- 4.3%     significant

=============================================================================

  3d:                  *1.78x as slow*    502.8ms +/- 0.8%    895.8ms +/- 7.5%     significant
    cube:              *1.74x as slow*    184.2ms +/- 0.9%    321.0ms +/- 9.9%     significant
    morph:             *1.85x as slow*    156.6ms +/- 0.4%    290.2ms +/- 5.9%     significant
    raytrace:          *1.76x as slow*    162.0ms +/- 1.4%    284.6ms +/- 6.7%     significant

  access:              *1.63x as slow*    573.8ms +/- 5.1%    933.2ms +/- 4.8%     significant
    binary-trees:      *2.24x as slow*     67.2ms +/- 1.5%    150.4ms +/- 2.1%     significant
    fannkuch:          *1.58x as slow*    221.8ms +/- 0.6%    350.6ms +/- 1.9%     significant
    nbody:             *1.69x as slow*    209.0ms +/- 14.0%    353.2ms +/- 11.7%     significant
    nsieve:            *1.042x as slow*    75.8ms +/- 0.7%     79.0ms +/- 1.1%     significant

  bitops:              *2.43x as slow*    392.4ms +/- 1.3%    952.8ms +/- 2.2%     significant
    3bit-bits-in-byte: *2.13x as slow*     65.0ms +/- 1.4%    138.6ms +/- 6.8%     significant
    bits-in-byte:      *1.86x as slow*     97.6ms +/- 0.7%    182.0ms +/- 5.0%     significant
    bitwise-and:       *4.64x as slow*     99.2ms +/- 2.2%    460.6ms +/- 3.7%     significant
    nsieve-bits:       *1.31x as slow*    130.6ms +/- 2.7%    171.6ms +/- 3.8%     significant

  controlflow:         *3.75x as slow*     52.0ms +/- 0.0%    195.2ms +/- 1.6%     significant
    recursive:         *3.75x as slow*     52.0ms +/- 0.0%    195.2ms +/- 1.6%     significant

  crypto:              *2.02x as slow*    247.2ms +/- 0.7%    499.2ms +/- 2.1%     significant
    aes:               *1.68x as slow*     91.6ms +/- 1.2%    153.6ms +/- 1.4%     significant
    md5:               *2.28x as slow*     77.0ms +/- 0.0%    175.6ms +/- 2.4%     significant
    sha1:              *2.16x as slow*     78.6ms +/- 0.9%    170.0ms +/- 3.2%     significant

  date:                *1.74x as slow*    478.2ms +/- 0.9%    831.6ms +/- 3.7%     significant
    format-tofte:      *1.28x as slow*    290.6ms +/- 1.0%    371.4ms +/- 3.4%     significant
    format-xparb:      *2.45x as slow*    187.6ms +/- 1.0%    460.2ms +/- 4.1%     significant

  math:                *1.87x as slow*    507.8ms +/- 9.0%    947.8ms +/- 7.0%     significant
    cordic:            *1.93x as slow*    193.6ms +/- 0.6%    373.4ms +/- 6.7%     significant
    partial-sums:      *1.69x as slow*    205.8ms +/- 3.9%    348.0ms +/- 7.4%     significant
    spectral-norm:     *2.09x as slow*    108.4ms +/- 38.2%    226.4ms +/- 7.1%     significant

  regexp:              *1.36x as slow*    335.4ms +/- 4.7%    457.4ms +/- 0.7%     significant
    dna:               *1.36x as slow*    335.4ms +/- 4.7%    457.4ms +/- 0.7%     significant

  string:              *1.56x as slow*   1088.8ms +/- 0.6%   1696.6ms +/- 4.8%     significant
    base64:            *2.20x as slow*    120.8ms +/- 2.0%    265.6ms +/- 10.7%     significant
    fasta:             *1.71x as slow*    254.4ms +/- 0.8%    434.6ms +/- 2.6%     significant
    tagcloud:          *1.49x as slow*    208.4ms +/- 1.9%    310.4ms +/- 2.8%     significant
    unpack-code:       1.076x as fast     362.2ms +/- 2.4%    336.6ms +/- 4.7%     significant
    validate-input:    *2.44x as slow*    143.0ms +/- 0.9%    349.4ms +/- 5.2%     significant

Comments

Very nice work guys! :)


By vdboor at Thu, 05/22/2008 - 06:47

Will konqueror 4.1 be able to manage google-notebook?


By pol at Fri, 05/23/2008 - 06:47

*recompiling everything now*


By fyanardi at Thu, 05/22/2008 - 09:27

Really I want to test Konq. 4.1 as soon as I can. Specially to test WYSITWG editors !!

-----------
http://www.itwadi.com


By zayed at Thu, 05/22/2008 - 09:37

Great stuff. Once again goes to show that the KHTML team is one of KDE's crown jewels, doing world-class work.


By Eike Hein at Thu, 05/22/2008 - 09:45

wow re performance and wow^n re Acid3. You guys are amazing :)


By Sebastian Sauer at Thu, 05/22/2008 - 16:11