| dart_library.library('BenchmarkBase', null, /* Imports */[ |
| 'dart/_runtime', |
| 'dart/core' |
| ], /* Lazy imports */[ |
| ], function(exports, dart, core) { |
| 'use strict'; |
| let dartx = dart.dartx; |
| class Expect extends core.Object { |
| static equals(expected, actual) { |
| if (!dart.equals(expected, actual)) { |
| dart.throw(`Values not equal: ${expected} vs ${actual}`); |
| } |
| } |
| static listEquals(expected, actual) { |
| if (expected[dartx.length] != actual[dartx.length]) { |
| dart.throw(`Lists have different lengths: ${expected[dartx.length]} vs ${actual[dartx.length]}`); |
| } |
| for (let i = 0; i < dart.notNull(actual[dartx.length]); i++) { |
| Expect.equals(expected[dartx.get](i), actual[dartx.get](i)); |
| } |
| } |
| fail(message) { |
| dart.throw(message); |
| } |
| } |
| dart.setSignature(Expect, { |
| methods: () => ({fail: [dart.dynamic, [dart.dynamic]]}), |
| statics: () => ({ |
| equals: [dart.void, [dart.dynamic, dart.dynamic]], |
| listEquals: [dart.void, [core.List, core.List]] |
| }), |
| names: ['equals', 'listEquals'] |
| }); |
| class BenchmarkBase extends core.Object { |
| BenchmarkBase(name) { |
| this.name = name; |
| } |
| run() {} |
| warmup() { |
| this.run(); |
| } |
| exercise() { |
| for (let i = 0; i < 10; i++) { |
| this.run(); |
| } |
| } |
| setup() {} |
| teardown() {} |
| static measureFor(f, timeMinimum) { |
| let time = 0; |
| let iter = 0; |
| let watch = new core.Stopwatch(); |
| watch.start(); |
| let elapsed = 0; |
| while (dart.notNull(elapsed) < dart.notNull(timeMinimum)) { |
| dart.dcall(f); |
| elapsed = watch.elapsedMilliseconds; |
| iter++; |
| } |
| return 1000.0 * dart.notNull(elapsed) / iter; |
| } |
| measure() { |
| this.setup(); |
| BenchmarkBase.measureFor(dart.fn(() => { |
| this.warmup(); |
| }), 100); |
| let result = BenchmarkBase.measureFor(dart.fn(() => { |
| this.exercise(); |
| }), 2000); |
| this.teardown(); |
| return result; |
| } |
| report() { |
| let score = this.measure(); |
| core.print(`${this.name}(RunTime): ${score} us.`); |
| } |
| } |
| dart.setSignature(BenchmarkBase, { |
| constructors: () => ({BenchmarkBase: [BenchmarkBase, [core.String]]}), |
| methods: () => ({ |
| run: [dart.void, []], |
| warmup: [dart.void, []], |
| exercise: [dart.void, []], |
| setup: [dart.void, []], |
| teardown: [dart.void, []], |
| measure: [core.double, []], |
| report: [dart.void, []] |
| }), |
| statics: () => ({measureFor: [core.double, [core.Function, core.int]]}), |
| names: ['measureFor'] |
| }); |
| // Exports: |
| exports.Expect = Expect; |
| exports.BenchmarkBase = BenchmarkBase; |
| }); |