2008-02-07  Eric Seidel  <eric@webkit.org>

        Reviewed by Sam.

        * sunspider: add an error message when ./tests/LIST is not found

2007-12-29  Alp Toker  <alp@atoker.com>

        Fix typo.

        * hosted/sunspider.html:

2007-12-29  Alp Toker  <alp@atoker.com>

        Reviewed by Maciej.

        Provide the current URL in the SunSpider results page. Useful for
        copying benchmark results out of browsers without a location bar or
        where the location bar can't handle long URLs.

        * hosted/sunspider-results.html:

2007-12-20  Eric Seidel  <eric@webkit.org>

        Reviewed by mjs.

        * sunspider: increase default number of runs for more accurate numbers

2007-12-18  Mark Rowe  <mrowe@apple.com>

        Fix typo.

        * hosted/sunspider.html:

2007-12-18  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.
        
        - give an extra digit of precision for small differences.

        * resources/sunspider-compare-results.js:

2007-12-17  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.
        
        - work around IE layout bugs

        * hosted/sunspider.css:

2007-12-17  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Mark.
        
        - fix compare feature

        * hosted/sunspider-results.html:

2007-12-17  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Mark.
        
        - Change the format of the output URL to be shorter, to meet IE constraints

        * hosted/sunspider-driver.html:
        * hosted/sunspider-results.html:

2007-12-13  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Oliver.
        
        - Add some explanatory test and a dumb logo to SunSpider web hosted version

        * hosted/sunspider-driver.html:
        * hosted/sunspider-results.html:
        * hosted/sunspider.css:
        * hosted/sunspider.html:

2007-12-13  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Oliver.
        
        - Make the web-hosted version of SunSpider look a little bit less drab.

        * hosted/sunspider-driver.html:
        * hosted/sunspider-results.html:
        * hosted/sunspider.css: Added.
        * hosted/sunspider.html:
        * resources/TEMPLATE.html:

2007-12-12  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Sam.
        
        - Change sunspider-compare-results output from showing "% faster" values to "x as fast" values.
        
        A sample of what new-style results would look like:
        
        TEST                   COMPARISON            FROM                 TO             DETAILS
        ...
        ** TOTAL **:           1.41x as fast     6613.6ms +/- 0.1%   4703.0ms +/- 0.1%     significant
        ...
            3bit-bits-in-byte: *1.36x as slow*     88.8ms +/- 0.6%    121.1ms +/- 0.6%     significant
        
        * resources/sunspider-compare-results.js:

2007-11-14  Eric Seidel  <eric@webkit.org>

        Reviewed by Sam.

        * sunspider: add --shark-cache for L2 Cache Miss profiling

2007-11-09  Alexey Proskuryakov  <ap@webkit.org>

        Reviewed by Darin.

        http://bugs.webkit.org/show_bug.cgi?id=15925
        SunSpider should check for Shark being installed

        * sunspider: Explicitly test that shark command line tool is installed.

2007-11-04  Darin Adler  <darin@apple.com>

        * hosted/sunspider.html: Tweaked formatting a bit.

2007-11-03  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        - Add compare mode and a description of the benchmark to the hosted version.

        * hosted/sunspider-results.html: Add compare mode - you can just paste in another results URL.
        * hosted/sunspider.html: Added intro text.
        * make-hosted: Copy new file.
        * resources/sunspider-compare-results.js: Made more reusable by putting the implementation in
        a function.
        * resources/sunspider-standalone-compare.js: Added. Calls the function in the way standalone mode
        expects.
        * sunspider-compare-results: Use sunspider-standalone-compare.js.

2007-11-02  Darin Adler  <darin@apple.com>

        * sunspider: Changed "--base" to "--set-baseline".

2007-11-02  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        * sunspider: Added a "--base" option that records the current test as a baseline.
        Moved the code to find the newest .mshark file into a function (since I needed to use
        it in the other script and I prefer to copy/paste a function).

        * sunspider-compare-results: Added logic to compare the baseline with the last
        run when you don't pass any parameters.

2007-10-29  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.
        
        - Added list of ECMAScript3 features that SunSpider does not cover currently.

        * UNCOVERED: Added.

2007-10-29  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Oliver.
        
        - Give better error messages when sunspider-compare-results fails

        * sunspider-compare-results:

2007-10-29  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.
        
        - fix Date tests to work in command-line SpiderMonkey

        * tests/date-format-tofte.js:
        * tests/date-format-xparb.js:

2007-10-29  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        * sunspider: Added --shark20 option, to run Shark at its highest sample
        resolution instead of its default.

2007-10-28  Adam Roben  <aroben@apple.com>

        Fix SunSpider on Windows

        Reviewed by Eric.

        * sunspider: Don't use colons in filenames.

2007-10-28  Darin Adler  <darin@apple.com>

        Reviewed by Adam.

        * resources/sunspider-analyze-results.js: Tweak the output format a little.
        Change so that when there's only one run we don't write out confidence
        intervals at all rather than writing "NaN" over and over again.

        * sunspider: Use the time and date as a suffix on the results file, that way
        all the results are left behind in the tmp directory. This will make it easy
        for us to add features that compare past results in the future. Also rename
        the .mshark files using the same scheme.

        * sunspider-compare-results: Relax the parsing rules so we can parse the
        results file exactly as it's emitted from sunspider.

2007-10-25  Adam Roben  <aroben@apple.com>

        Strip carriage returns from results

        Carriage returns were screwing up sunspider-compare-results on
        Windows.

        Rubberstamped by Oliver.

        * sunspider:

2007-10-24  Darin Adler  <darin@apple.com>

        Reviewed by Eric.

        * sunspider: Open the profile in shark after completing a run.
        * sunspider-compare-results: Tiny perl tweaks.

2007-10-23  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        - Don't hardcode my path to testkjs
        
        * sunspider-compare-results:

2007-10-23  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.
        
        - Add a compare script to compare results, and improve formatting of standard results a bit.

        * resources/sunspider-analyze-results.js:
        * resources/sunspider-compare-results.js: Added.
        * sunspider-compare-results: Added.

2007-10-23  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        * resources/sunspider-analyze-results.js: Do the error range
        properly, using the t-distribution instead of 1.96 (which was
        based on the normal distribution).
        
        * sunspider: Print results in a way that will be friendlier to the
        soon-to-come compare mode.

2007-10-22  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Review.
        
        - add more tests (probably the final set for now)
        
        Already balanced. Added date, regexp, control flow, and a few
        more string and object/array access tests.
        
        * tests/LIST:
        * tests/access-fannkuch.js: Added.
        * tests/access-nbody.js: Added.
        * tests/controlflow-recursive.js: Added.
        * tests/date-format-tofte.js: Added.
        * tests/date-format-xparb.js: Added.
        * tests/regexp-dna.js: Added.
        * tests/string-validate-input.js: Added.

2007-10-21  Eric Seidel  <eric@webkit.org>

        Reviewed by mjs.

        * sunspider: make --shark only sample from testkjs

2007-10-21  Maciej Stachowiak  <mjs@apple.com>

        Rubber stamped by Eric.
        
        - added crypto tests (already balanced)

        * tests/LIST:
        * tests/crypto-aes.js: Added.
        * tests/crypto-md5.js: Added.
        * tests/crypto-sha1.js: Added.

2007-10-21  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Adam.
        
        - rebalance new tests
        
        Scaled the new tests so they take 400-600ms on a reasonably normal user setup:
        
        Internet Explorer 7, Window XP, Dell Latitude D810 with a 2.13GHz Pentium M

        This balances them with the existing tests.

        * tests/access-binary-trees.js:
        * tests/access-nsieve.js:
        * tests/bitops-nsieve-bits.js:
        * tests/math-partial-sums.js:
        * tests/math-spectral-norm.js:
        * tests/string-fasta.js:

2007-10-20  Eric Seidel  <eric@webkit.org>

        Reviewed by darin.
        
        Add improved argument handling to sunspider, including
        --runs=<number>, --tests=<pattern, --shark, and --help
        Also re-factor code into subroutines

        * sunspider: improved argument handling

2007-10-20  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Mark.

        - Add more new tests, mostly from the computer language shootout. Not normalized yet.
        
        * TODO:
        * tests/LIST:
        * tests/access-binary-trees.js: Added.
        * tests/access-nsieve.js: Added.
        * tests/bitops-nsieve-bits.js: Added.
        * tests/math-partial-sums.js: Added.
        * tests/math-spectral-norm.js: Added.
        * tests/string-fasta.js: Added.

2007-10-20  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        * TODO: Updated to note areas that are now well-covered.
        
        - Change the tests and the driver to avoid leaving large object
        graphs hanging around, since that throws off the subsequent tests.
        
        * resources/sunspider-standalone-driver.js:
        * tests/3d-cube.js:
        * tests/3d-morph.js:
        * tests/3d-raytrace.js:
        * tests/bitops-bitwise-and.js:
        * tests/string-base64.js:
        * tests/string-tagcloud.js:

2007-10-20  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Nikolas.
        
        - Rebalance test complexity.
        
        Scaled all the tests so they take 400-600ms on a reasonably normal user setup:
        
        Internet Explorer 7, Window XP, Dell Latitude D810 with a 2.13GHz Pentium M

        However, for some tests, IE7 was a huge outlier compared to other
        major browsers. For those tests, I used Firefox 2.0.0.8 on the
        same OS and hardware as a normalization basis.
        
        * tests/3d-morph.js:
        * tests/3d-raytrace.js:
        * tests/bitops-3bit-bits-in-byte.js:
        * tests/bitops-bits-in-byte.js:
        * tests/bitops-bitwise-and.js:
        * tests/math-cordic.js:
        * tests/string-base64.js:
        * tests/string-tagcloud.js:
        * tests/string-unpack-code.js:

2007-10-20  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Oliver.
        
        - Fix the browser-hosted driver to be compatible with Safari 2

        * hosted/sunspider-driver.html:

2007-10-20  Maciej Stachowiak  <mjs@apple.com>

        Rubber stamped by Hyatt.
        
        - Add BSD license notice to cordic test, the original author said to do so.

        * tests/math-cordic.js:

2007-10-18  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Eric.
        
        - Support Windows and Windows browsers.

        * hosted/sunspider-results.html: Display results correctly in IE.
        * sunspider: tweaks to work on Windows, and with spaces in the path.

2007-10-18  Maciej Stachowiak  <mjs@apple.com>

        Rubber stamped by Oliver.

        * tests/string-tagcloud.js: Remove stray print()

2007-10-17  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Oliver.
        
        Add some string test cases.

        * tests/string-base64.js: Added. Does base64 encoding and decoding.
        * tests/string-tagcloud.js: Added. Parses a JSON string and
        generates tagcloud HTML markup based on the data.        
        * tests/string-unpack-code.js: Added. Unpack compressed versions of
        four of the most popular JavaScript libraries.
        * tests/LIST: Added the new tests.

2007-10-16  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Anders.

        * TODO: Updated with info on how to do the stats properly.

        * hosted/sunspider-driver.html: Reduce timeout from 500 to 200 to
        avoid overly slowing down the benchmark.

        Added some 3D-related test cases.
        
        * tests/3d-cube.js: Added.
        * tests/3d-morph.js: Added.
        * tests/3d-raytrace.js: Added.
        * tests/LIST:

2007-10-14  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        - New JavaScript benchmark
        http://bugs.webkit.org/show_bug.cgi?id=15515
        
        A start on a new JavaScript benchmark, with standalone and
        browser-hosted drivers.
        
        The test content is still incomplete and the drivers could use
        some more features but there is enough here to make a good start.
        
        The drivers compute a 95% confidence interval on the mean for the
        whole test, each category, and each individual test to make it
        easier to tell whether differences are statistically
        significant. The confidence interval can be narrowed by running
        the test more times.
        
        * TODO: Added. Remaining things that need to be done.
        * sunspider: Added. Perl script that acts as the standalone test driver.
        * resources/sunspider-standalone-driver.js: Added. JavaScript part
        of standalone test driver.
        * resources/sunspider-analyze-results.js: Added. JavaScript statistical
        analysis code.
        * resources/TEMPLATE.html: Added. Template for browser-hosted tests.
        * make-hosted: Added. Script to generate browser-hosted tests.
        * hosted/sunspider.html: Added. Start page for browser-hosted test.
        * hosted/sunspider-driver.html: Added. Driver for browser-hosted tests.
        * hosted/sunspider-results.html: Added. Results page for browser-hosted
        tests.
        * hosted/sunspider-record-result.js: Added. Helper file for browser-hosted
        tests.
        * tests/LIST: Added. List of tests to use.
        * tests/bitops-3bit-bits-in-byte.js: Added. Some initial test content.
        * tests/bitops-bits-in-byte.js: Added. Ditto.
        * tests/bitops-bitwise-and.js: Added. Ditto.
        * tests/math-cordic.js: Added. Ditto.

