node/deps/v8/test/js-perf-test/Compiler/medium.js
Michaël Zasso 09a8440b45
deps: update V8 to 12.2.281.27
PR-URL: https://github.com/nodejs/node/pull/51362
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
2024-03-31 15:36:07 +02:00

104 lines
2.0 KiB
JavaScript

// Copyright 2023 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
(() => {
let a = 19, b = 3;
let i = {};
function copy() {
let o = {};
o.a0 = i.a0;
o.a1 = i.a1;
o.a2 = i.a2;
o.a3 = i.a3;
o.a4 = i.a4;
o.a5 = i.a5;
o.a6 = i.a6;
o.a7 = i.a7;
o.a8 = i.a8;
o.a9 = i.a9;
o.a10 = i.a10;
o.a11 = i.a11;
o.a12 = i.a12;
o.a13 = i.a13;
o.a14 = i.a14;
o.a15 = i.a15;
o.a16 = i.a16;
o.a17 = i.a11;
o.a18 = i.a18;
o.a19 = i.a19;
return o;
}
function fact() {
let i = a;
let r = 1;
while (i != 0) {
r *= i;
i--;
}
return i;
}
function is_prime() {
for (let i = 2; i <= Math.sqrt(a); i++) {
if (a % i == 0) return false;
}
return true;
}
function eratosthenes(max) {
let nums = new Array(max).fill(false);
nums[0] = nums[1] = true;
for (let i = 2; i <= Math.sqrt(max); i++) {
if (nums[i]) continue;
for (var j = i * i; j < max; j += i) {
nums[j] = true;
}
}
return nums;
}
// Initializing feedback for each function
%PrepareFunctionForOptimization(copy);
i = copy();
copy();
%PrepareFunctionForOptimization(fact);
fact();
a = 29;
fact();
%PrepareFunctionForOptimization(is_prime);
is_prime();
a = 23;
is_prime();
a = 25;
is_prime();
%PrepareFunctionForOptimization(eratosthenes);
eratosthenes(1000);
// Creating runners
function run_copy() {
%BenchTurbofan(copy, 10);
}
function run_fact() {
%BenchTurbofan(fact, 10);
}
function run_prime() {
%BenchTurbofan(is_prime, 10);
}
function run_eratosthenes() {
%BenchTurbofan(eratosthenes, 10);
}
// Registering tests
createSuite('Medium-Copy', 1, run_copy);
createSuite('Medium-Fact', 1, run_fact);
createSuite('Medium-Prime', 1, run_prime);
createSuite('Medium-Eratosthenes', 1, run_eratosthenes);
})();