V8 Benchmark Suite Revisions

The V8 benchmark suite is changed from time to time as we fix bugs or expand the scope of the benchmarks. Here is a list of revisions, with a description of the changes made. Note that benchmark results are not comparable unless both results are run with the same revision of the benchmark suite.

Version 6 (link)

Removed dead code from the RayTrace benchmark and fixed a couple of typos in the DeltaBlue implementation. Changed the Splay benchmark to avoid converting the same numeric key to a string over and over again and to avoid inserting and removing the same element repeatedly thus increasing pressure on the memory subsystem. Changed the RegExp benchmark to exercise the regular expression engine on different input strings.

Furthermore, the benchmark runner was changed to run the benchmarks for at least a few times to stabilize the reported numbers on slower machines.

Version 5 (link)

Removed duplicate line in random seed code, and changed the name of the Object.prototype.inherits function in the DeltaBlue benchmark to inheritsFrom to avoid name clashes when running in Chromium with extensions enabled.

Version 4 (link)

The Splay benchmark is a newcomer in version 4. It manipulates a splay tree by adding and removing data nodes, thus exercising the memory management subsystem of the JavaScript engine.

Furthermore, all the unused parts of the Prototype library were removed from the RayTrace benchmark. This does not affect the running of the benchmark.

Version 3 (link)

Version 3 adds a new benchmark, RegExp. The RegExp benchmark is generated by loading 50 of the most popular pages on the web and logging all regexp operations performed. Each operation is given a weight that is calculated from an estimate of the popularity of the pages where it occurs and the number of times it is executed while loading each page. Finally the literal letters in the data are encoded using ROT13 in a way that does not affect how the regexps match their input.

Version 2 (link)

For version 2 the Crypto benchmark was fixed. Previously, the decryption stage was given plaintext as input, which resulted in an error. Now, the decryption stage is given the output of the encryption stage as input. The result is checked against the original plaintext. For this to give the correct results the crypto objects are reset for each iteration of the benchmark. In addition, the size of the plain text has been increased a little and the use of Math.random() and new Date() to build an RNG pool has been removed.

Other benchmarks were fixed to do elementary verification of the results of their calculations. This is to avoid accidentally obtaining scores that are the result of an incorrect JavaScript engine optimization.

Version 1 (link)

Initial release.