Index: benchmarks/base.js |
=================================================================== |
--- benchmarks/base.js (revision 399) |
+++ benchmarks/base.js (working copy) |
@@ -76,6 +76,24 @@ |
BenchmarkSuite.version = '2 candidate'; |
+// To make the benchmark results predictable, we replace Math.random |
+// with a 100% deterministic alternative. |
+Math.random = (function() { |
+ var seed = 49734321; |
+ return function() { |
+ // Robert Jenkins' 32 bit integer hash function. |
+ seed = ((seed + 0x7ed55d16) + (seed << 12)) & 0xffffffff; |
+ seed = ((seed ^ 0xc761c23c) ^ (seed >>> 19)) & 0xffffffff; |
+ seed = ((seed + 0x165667b1) + (seed << 5)) & 0xffffffff; |
+ seed = ((seed + 0xd3a2646c) ^ (seed << 9)) & 0xffffffff; |
+ seed = ((seed + 0xd3a2646c) ^ (seed << 9)) & 0xffffffff; |
+ seed = ((seed + 0xfd7046c5) + (seed << 3)) & 0xffffffff; |
+ seed = ((seed ^ 0xb55a4f09) ^ (seed >>> 16)) & 0xffffffff; |
+ return (seed & 0xfffffff) / 0x10000000; |
+ }; |
+})(); |
+ |
+ |
// Runs all registered benchmark suites and optionally yields between |
// each individual benchmark to avoid running for too long in the |
// context of browsers. Once done, the final score is reported to the |