| globalThis.console = { |
| log() { }, |
| warn() { }, |
| assert(condition) { |
| if (!condition) throw new Error("Invalid assertion"); |
| } |
| }; |
| |
| globalThis.clearTimeout = function () { }; |
| |
| |
| // JetStream benchmark. |
| class Benchmark extends StartupBenchmark { |
| // How many times (separate iterations) should we reuse the source code. |
| // Use 0 to skip. |
| lastResult = {}; |
| sourceHash = 0 |
| |
| constructor({iterationCount}) { |
| super({ |
| iterationCount, |
| expectedCacheCommentCount: 597, |
| sourceCodeReuseCount: 1, |
| }); |
| } |
| |
| runIteration(iteration) { |
| let sourceCode = this.iterationSourceCodes[iteration]; |
| if (!sourceCode) |
| throw new Error(`Could not find source for iteration ${iteration}`); |
| // Module in sourceCode it assigned to the ReactRenderTest variable. |
| let ReactRenderTest; |
| |
| let initStart = performance.now(); |
| const res = eval(sourceCode); |
| const runStart = performance.now(); |
| |
| this.lastResult = ReactRenderTest.renderTest(); |
| this.lastResult.htmlHash = this.quickHash(this.lastResult.html); |
| const end = performance.now(); |
| |
| const loadTime = runStart - initStart; |
| const runTime = end - runStart; |
| // For local debugging: |
| // print(`Iteration ${iteration}:`); |
| // print(` Load time: ${loadTime.toFixed(2)}ms`); |
| // print(` Render time: ${runTime.toFixed(2)}ms`); |
| } |
| |
| validate() { |
| this.expect("HTML length", this.lastResult.html.length, 183778); |
| this.expect("HTML hash", this.lastResult.htmlHash, 1177839858); |
| } |
| |
| expect(name, value, expected) { |
| if (value != expected) |
| throw new Error(`Expected ${name} to be ${expected}, but got ${value}`); |
| } |
| } |