| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 | 5 |
| 6 // Performance.now is used in latency benchmarks, the fallback is Date.now. | 6 // Performance.now is used in latency benchmarks, the fallback is Date.now. |
| 7 var performance = performance || {}; | 7 var performance = performance || {}; |
| 8 performance.now = (function() { | 8 performance.now = (function() { |
| 9 return performance.now || | 9 return performance.now || |
| 10 performance.mozNow || | 10 performance.mozNow || |
| (...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 274 : benchmark.doDeterministic; | 274 : benchmark.doDeterministic; |
| 275 | 275 |
| 276 function Measure(data) { | 276 function Measure(data) { |
| 277 var elapsed = 0; | 277 var elapsed = 0; |
| 278 var start = new Date(); | 278 var start = new Date(); |
| 279 | 279 |
| 280 // Run either for 1 second or for the number of iterations specified | 280 // Run either for 1 second or for the number of iterations specified |
| 281 // by minIterations, depending on the config flag doDeterministic. | 281 // by minIterations, depending on the config flag doDeterministic. |
| 282 for (var i = 0; (doDeterministic ? | 282 for (var i = 0; (doDeterministic ? |
| 283 i<benchmark.deterministicIterations : elapsed < 1000); i++) { | 283 i<benchmark.deterministicIterations : elapsed < 1000); i++) { |
| 284 benchmark.run(); | 284 for (var j = 0; j < 100; j++) benchmark.run(); |
| 285 elapsed = new Date() - start; | 285 elapsed = new Date() - start; |
| 286 } | 286 } |
| 287 if (data != null) { | 287 if (data != null) { |
| 288 data.runs += i; | 288 data.hectoruns += i; |
| 289 data.elapsed += elapsed; | 289 data.elapsed += elapsed; |
| 290 } | 290 } |
| 291 } | 291 } |
| 292 | 292 |
| 293 // Sets up data in order to skip or not the warmup phase. | 293 // Sets up data in order to skip or not the warmup phase. |
| 294 if (!doWarmup && data == null) { | 294 if (!doWarmup && data == null) { |
| 295 data = { runs: 0, elapsed: 0 }; | 295 data = { hectoruns: 0, elapsed: 0 }; |
| 296 } | 296 } |
| 297 | 297 |
| 298 if (data == null) { | 298 if (data == null) { |
| 299 Measure(null); | 299 Measure(null); |
| 300 return { runs: 0, elapsed: 0 }; | 300 return { hectoruns: 0, elapsed: 0 }; |
| 301 } else { | 301 } else { |
| 302 Measure(data); | 302 Measure(data); |
| 303 // If we've run too few iterations, we continue for another second. | 303 // If we've run too few iterations, we continue for another second. |
| 304 if (data.runs < benchmark.minIterations) return data; | 304 if (data.hectoruns * 100 < benchmark.minIterations) return data; |
| 305 var usec = (data.elapsed * 1000) / data.runs; | 305 var usec = (data.elapsed * 10) / data.hectoruns; |
| 306 var rms = (benchmark.rmsResult != null) ? benchmark.rmsResult() : 0; | 306 var rms = (benchmark.rmsResult != null) ? benchmark.rmsResult() : 0; |
| 307 this.NotifyStep(new BenchmarkResult(benchmark, usec, rms)); | 307 this.NotifyStep(new BenchmarkResult(benchmark, usec, rms)); |
| 308 return null; | 308 return null; |
| 309 } | 309 } |
| 310 } | 310 } |
| 311 | 311 |
| 312 | 312 |
| 313 // This function starts running a suite, but stops between each | 313 // This function starts running a suite, but stops between each |
| 314 // individual benchmark in the suite and returns a continuation | 314 // individual benchmark in the suite and returns a continuation |
| 315 // function which can be invoked to run the next benchmark. Once the | 315 // function which can be invoked to run the next benchmark. Once the |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 358 } catch (e) { | 358 } catch (e) { |
| 359 suite.NotifyError(e); | 359 suite.NotifyError(e); |
| 360 return null; | 360 return null; |
| 361 } | 361 } |
| 362 return RunNextSetup; | 362 return RunNextSetup; |
| 363 } | 363 } |
| 364 | 364 |
| 365 // Start out running the setup. | 365 // Start out running the setup. |
| 366 return RunNextSetup(); | 366 return RunNextSetup(); |
| 367 } | 367 } |
| OLD | NEW |