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...
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