Sunday, June 15, 2008

JavaScript speed race

Just for fun, I tested JavaScript performance of several web browsers, using the well-known SunSpider benchmark tool. The test machine is a fairly old Fujitsu-Siemens Amilo notebook with AMD Turion64 1.8 GHz processor and 1 GB RAM, running Microsoft Windows XP SP2.

SunSpider benchmark results

The result is not surprising. Internet Explorer is notoriously slow but there is hope with IE8. Mozilla developers have done a great job optimizing Firefox. WebKit with SquirrelFish (and surely the upcoming Safari 4) really shines in speed.

18 comments:

  1. what about a konqueror 3 & 4 speed test ?

    ReplyDelete
  2. Proud KDE developer, but not including a current konqueror 4.1 beta build for windows, using KHTML, for completeness?

    ReplyDelete
  3. @anonymous
    he did include the development version for KDE, its the one at the top :)

    ReplyDelete
  4. @Thomas: WebKit!= KHTML. Perhaps that is just ungettable for Qt coders? :)

    ReplyDelete
  5. @Thomas

    Plus: Qt 4.4 Webkit != Webkit Nightly. Trolltech freezes their version of Webkit for the lifetime of a major (4.x) Qt release AFAIK.

    I'm really curious how Konqueror with KHTML for 4.1 would fare against the Qt 4.4 Webkit, especially since KHTML received some major JavaScript engine performance improvements recently.

    -Erunno

    ReplyDelete
  6. The web is unfortunately not only about standards and there are much more websites working well with webkit than with khtml right now.

    This is great news, can't wait for a mature webkit kpart.

    ReplyDelete
  7. @anonymous: actually because I plan to redo the test once KDE 4.1 and Firefox 3 finally released.

    ReplyDelete
  8. I too wonder how long Konq3 and current Konq4 takes on that same machine.

    ReplyDelete
  9. I'd like to suggest your benchmark, being hosted by webkit.org, may be optimised by webkit?

    Are there any 'official' Javascript benchmarks out there (say maybe w3c)?

    It'd be interesting to see the results of something like that. Oh my FF3 x64 gave me 4070 on that test :)

    ReplyDelete
  10. > I plan to redo the test once KDE 4.1 and Firefox 3 finally released.

    If you're going ahead and testing the FFbeta, why not the KDE beta? Why wait on Konqueror? Especially if you're posting it to planet kde?

    ReplyDelete
  11. Konqueror 3.5.9 (Debian Testing) - 54905.0ms (average of 5 tests, excluding any outliers)

    ReplyDelete
  12. @tom: other JS tests are not as complete as SunSpider

    @blauzahl: c'mon, anyone that tries KDE 4 beta1 Windows knows that it chokes on one of the SunSpider tests. The fix for that has not make it yet to the Windows binary. and btw it is FF RC3, not beta.

    ReplyDelete
  13. FIREFOX 3 FINAL

    RESULTS (means and 95% confidence intervals)
    --------------------------------------------
    Total: 4225.4ms +/- 2.1%
    --------------------------------------------

    3d: 494.8ms +/- 2.9%
    cube: 176.6ms +/- 2.5%
    morph: 178.6ms +/- 7.5%
    raytrace: 139.6ms +/- 1.7%

    access: 704.8ms +/- 3.4%
    binary-trees: 54.2ms +/- 6.4%
    fannkuch: 332.8ms +/- 4.6%
    nbody: 181.6ms +/- 4.1%
    nsieve: 136.2ms +/- 5.9%

    bitops: 645.6ms +/- 6.4%
    3bit-bits-in-byte: 112.4ms +/- 8.2%
    bits-in-byte: 177.0ms +/- 18.2%
    bitwise-and: 146.4ms +/- 2.9%
    nsieve-bits: 209.8ms +/- 4.3%

    controlflow: 56.8ms +/- 3.9%
    recursive: 56.8ms +/- 3.9%

    crypto: 279.2ms +/- 8.1%
    aes: 108.2ms +/- 4.3%
    md5: 80.6ms +/- 9.1%
    sha1: 90.4ms +/- 22.4%

    date: 292.0ms +/- 6.0%
    format-tofte: 182.2ms +/- 5.3%
    format-xparb: 109.8ms +/- 15.3%

    math: 516.0ms +/- 6.5%
    cordic: 250.0ms +/- 13.1%
    partial-sums: 151.8ms +/- 4.4%
    spectral-norm: 114.2ms +/- 14.8%

    regexp: 279.4ms +/- 9.3%
    dna: 279.4ms +/- 9.3%

    string: 956.8ms +/- 4.0%
    base64: 113.6ms +/- 13.2%
    fasta: 220.2ms +/- 4.0%
    tagcloud: 156.4ms +/- 4.9%
    unpack-code: 339.4ms +/- 10.1%
    validate-input: 127.2ms +/- 11.2%

    ReplyDelete
  14. @Nick Presta, @kaper: thanks for testing. but the result must come from the same machine to have any meaning.

    ReplyDelete
  15. Chrome

    Total: 2518.8ms +/- 0.9%
    --------------------------------------------

    3d: 176.6ms +/- 3.3%
    cube: 45.8ms +/- 11.3%
    morph: 68.2ms +/- 7.2%
    raytrace: 62.6ms +/- 3.9%

    access: 119.6ms +/- 5.1%
    binary-trees: 8.4ms +/- 13.2%
    fannkuch: 38.8ms +/- 2.7%
    nbody: 46.0ms +/- 12.2%
    nsieve: 26.4ms +/- 2.6%

    bitops: 90.8ms +/- 4.6%
    3bit-bits-in-byte: 6.8ms +/- 8.2%
    bits-in-byte: 14.4ms +/- 4.7%
    bitwise-and: 23.2ms +/- 4.5%
    nsieve-bits: 46.4ms +/- 8.2%

    controlflow: 4.4ms +/- 15.5%
    recursive: 4.4ms +/- 15.5%

    crypto: 90.8ms +/- 5.3%
    aes: 33.2ms +/- 9.3%
    md5: 30.0ms +/- 6.6%
    sha1: 27.6ms +/- 2.5%

    date: 508.2ms +/- 1.2%
    format-tofte: 297.0ms +/- 2.6%
    format-xparb: 211.2ms +/- 2.5%

    math: 197.6ms +/- 7.9%
    cordic: 106.6ms +/- 9.3%
    partial-sums: 68.0ms +/- 21.6%
    spectral-norm: 23.0ms +/- 9.4%

    regexp: 510.8ms +/- 0.5%
    dna: 510.8ms +/- 0.5%

    string: 820.0ms +/- 1.7%
    base64: 89.6ms +/- 9.2%
    fasta: 75.8ms +/- 2.1%
    tagcloud: 226.8ms +/- 2.5%
    unpack-code: 297.8ms +/- 1.0%
    validate-input: 130.0ms +/- 1.8%

    ReplyDelete
  16. On my iMac 2008 (2.8 GHz Core Duo) using WebKit Nightly build r49845. Sorry but Chrome is not available on Mac...

    ============================================
    RESULTS (means and 95% confidence intervals)
    --------------------------------------------
    Total: 483.8ms +/- 1.0%
    --------------------------------------------

    3d: 58.4ms +/- 7.0%
    cube: 15.8ms +/- 10.3%
    morph: 23.8ms +/- 11.3%
    raytrace: 18.8ms +/- 12.7%

    access: 52.2ms +/- 3.9%
    binary-trees: 6.0ms +/- 0.0%
    fannkuch: 20.6ms +/- 10.1%
    nbody: 15.2ms +/- 10.7%
    nsieve: 10.4ms +/- 13.6%

    bitops: 32.8ms +/- 4.2%
    3bit-bits-in-byte: 5.4ms +/- 12.6%
    bits-in-byte: 9.6ms +/- 7.1%
    bitwise-and: 6.0ms +/- 0.0%
    nsieve-bits: 11.8ms +/- 8.8%

    controlflow: 5.6ms +/- 12.2%
    recursive: 5.6ms +/- 12.2%

    crypto: 28.0ms +/- 3.1%
    aes: 13.4ms +/- 5.1%
    md5: 7.8ms +/- 7.1%
    sha1: 6.8ms +/- 8.2%

    date: 63.0ms +/- 5.8%
    format-tofte: 28.8ms +/- 5.6%
    format-xparb: 34.2ms +/- 7.0%

    math: 46.2ms +/- 4.4%
    cordic: 15.4ms +/- 9.2%
    partial-sums: 21.6ms +/- 7.7%
    spectral-norm: 9.2ms +/- 6.0%

    regexp: 30.8ms +/- 6.0%
    dna: 30.8ms +/- 6.0%

    string: 166.8ms +/- 2.5%
    base64: 22.4ms +/- 5.0%
    fasta: 24.0ms +/- 5.2%
    tagcloud: 36.4ms +/- 6.7%
    unpack-code: 48.6ms +/- 6.7%
    validate-input: 35.4ms +/- 8.1%

    ReplyDelete
  17. Guys, I appreciate that you post your own test results. But a single result is meaningless in this context since we must compare the benchmarks result running in the SAME machine.

    IOW, if you want to do the comparison yourself, test all browsers JS engine and compare the results, not just showing ONE result.

    ReplyDelete

Note: Only a member of this blog may post a comment.