|
|
|
V8 Benchmark Suite
|
|
|
|
==================
|
|
|
|
|
|
|
|
This is the V8 benchmark suite: A collection of pure JavaScript
|
|
|
|
benchmarks that we have used to tune V8. The licenses for the
|
|
|
|
individual benchmarks are included in the JavaScript files.
|
|
|
|
|
|
|
|
In addition to the benchmarks, the suite consists of the benchmark
|
|
|
|
framework (base.js), which must be loaded before any of the individual
|
|
|
|
benchmark files, and two benchmark runners: An HTML version (run.html)
|
|
|
|
and a standalone JavaScript version (run.js).
|
|
|
|
|
|
|
|
|
|
|
|
Changes From Version 1 To Version 2
|
|
|
|
===================================
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
Changes From Version 2 To Version 3
|
|
|
|
===================================
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
Changes from Version 3 to Version 4
|
|
|
|
===================================
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
Changes from Version 4 to Version 5
|
|
|
|
===================================
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
Changes from Version 5 to Version 6
|
|
|
|
===================================
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
Furthermore, the benchmark runner was changed to run the benchmarks
|
|
|
|
for at least a few times to stabilize the reported numbers on slower
|
|
|
|
machines.
|