6215add877
Change-Id: I2fe6e6a634a406f4c0e5c491b4ff6286ae888175
Reviewed-on: https://chromium-review.googlesource.com/c/external/github.com/WebKit/JetStream/+/7124399
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
83 lines
2.9 KiB
JavaScript
83 lines
2.9 KiB
JavaScript
/*
|
|
* Copyright (C) 2025 Apple Inc. All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
|
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
|
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
|
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
// console.log = () => {};
|
|
|
|
class Benchmark extends StartupBenchmark {
|
|
iteration = 0;
|
|
|
|
constructor({iterationCount, expectedCacheCommentCount}) {
|
|
super({
|
|
iterationCount,
|
|
codeReuseCount: 2,
|
|
expectedCacheCommentCount,
|
|
});
|
|
}
|
|
|
|
runIteration() {
|
|
const sourceCode = this.iterationSourceCodes[this.iteration];
|
|
if (!sourceCode)
|
|
throw new Error(`Could not find source for iteration ${this.iteration}`);
|
|
// Module in sourceCode it assigned to the ClassStartupTest variable.
|
|
let BabylonJSBenchmark;
|
|
|
|
// let initStart = performance.now();
|
|
eval(sourceCode);
|
|
// const runStart = performance.now();
|
|
|
|
const { classNames, cameraRotationLength } = BabylonJSBenchmark.runTest(30);
|
|
const lastResult = {
|
|
classNames,
|
|
cameraRotationLength,
|
|
};
|
|
this.validateIteration(lastResult)
|
|
// const end = performance.now();
|
|
// const loadTime = runStart - initStart;
|
|
// const runTime = end - runStart;
|
|
// For local debugging:
|
|
// print(`Iteration ${this.iteration}:`);
|
|
// print(` Load time: ${loadTime.toFixed(2)}ms`);
|
|
// print(` Render time: ${runTime.toFixed(2)}ms`);
|
|
this.iteration++;
|
|
}
|
|
|
|
validateIteration(lastResult) {
|
|
this.expect(
|
|
"this.lastResult.classNames.length",
|
|
lastResult.classNames.length,
|
|
2135
|
|
);
|
|
this.expect(
|
|
"this.lastResult.cameraRotationLength",
|
|
Math.round(lastResult.cameraRotationLength * 1000),
|
|
464
|
|
);
|
|
}
|
|
|
|
expect(name, value, expected) {
|
|
if (value != expected)
|
|
throw new Error(`Expected ${name} to be ${expected}, but got ${value}`);
|
|
}
|
|
}
|