Upload Kmake

This commit is contained in:
Gorochu
2026-05-26 23:36:42 -07:00
parent ba051b2f74
commit 555ec72358
41615 changed files with 13344630 additions and 1 deletions

View File

@ -0,0 +1,48 @@
// Copyright 2014 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.
var N = 10;
var LargeN = 1e4;
var keys;
var keyValuePairs;
function SetupKeyValuePairsFromKeys() {
keyValuePairs = keys.map((v) => [v, v]);
}
function SetupSmiKeys(count = 2 * N) {
keys = Array.from({ length : count }, (v, i) => i);
}
function SetupSmiKeyValuePairs(count = 2 * N) {
SetupSmiKeys(count);
SetupKeyValuePairsFromKeys();
}
function SetupStringKeys(count = 2 * N) {
keys = Array.from({ length : count }, (v, i) => 's' + i);
}
function SetupStringKeyValuePairs(count = 2 * N) {
SetupStringKeys(count);
SetupKeyValuePairsFromKeys();
}
function SetupObjectKeys(count = 2 * N) {
keys = Array.from({ length : count }, (v, i) => ({}));
}
function SetupObjectKeyValuePairs(count = 2 * N) {
SetupObjectKeys(count);
SetupKeyValuePairsFromKeys();
}
function SetupDoubleKeys(count = 2 * N) {
keys = Array.from({ length : count }, (v, i) => i + 0.234);
}
function SetupDoubleKeyValuePairs(count = 2 * N) {
SetupDoubleKeys(count);
SetupKeyValuePairsFromKeys();
}

View File

@ -0,0 +1,315 @@
// Copyright 2014 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.
var MapSmiBenchmark = new BenchmarkSuite('Map-Smi', [1000], [
new Benchmark('Set', false, false, 0, MapSetSmi, MapSetupSmiBase, MapTearDown),
new Benchmark('Has', false, false, 0, MapHasSmi, MapSetupSmi, MapTearDown),
new Benchmark('Get', false, false, 0, MapGetSmi, MapSetupSmi, MapTearDown),
new Benchmark('Delete', false, false, 0, MapDeleteSmi, MapSetupSmi, MapTearDown),
]);
var MapStringBenchmark = new BenchmarkSuite('Map-String', [1000], [
new Benchmark('Set', false, false, 0, MapSetString, MapSetupStringBase, MapTearDown),
new Benchmark('Has', false, false, 0, MapHasString, MapSetupString, MapTearDown),
new Benchmark('Get', false, false, 0, MapGetString, MapSetupString, MapTearDown),
new Benchmark('Delete', false, false, 0, MapDeleteString, MapSetupString, MapTearDown),
]);
var MapObjectBenchmark = new BenchmarkSuite('Map-Object', [1000], [
new Benchmark('Set', false, false, 0, MapSetObject, MapSetupObjectBase, MapTearDown),
new Benchmark('Has', false, false, 0, MapHasObject, MapSetupObject, MapTearDown),
new Benchmark('Get', false, false, 0, MapGetObject, MapSetupObject, MapTearDown),
new Benchmark('Delete', false, false, 0, MapDeleteObject, MapSetupObject, MapTearDown),
]);
var MapDoubleBenchmark = new BenchmarkSuite('Map-Double', [1000], [
new Benchmark('Set', false, false, 0, MapSetDouble, MapSetupDoubleBase, MapTearDown),
new Benchmark('Has', false, false, 0, MapHasDouble, MapSetupDouble, MapTearDown),
new Benchmark('Get', false, false, 0, MapGetDouble, MapSetupDouble, MapTearDown),
new Benchmark('Delete', false, false, 0, MapDeleteDouble, MapSetupDouble, MapTearDown),
]);
var MapObjectLargeBenchmark = new BenchmarkSuite('Map-Object-Set-Get-Large', [1e7], [
new Benchmark('Set-Get', false, false, 0, MapSetGetObjectLarge,
MapSetupObjectBaseLarge, MapTearDown),
]);
var MapIterationBenchmark = new BenchmarkSuite('Map-Iteration', [1000], [
new Benchmark('ForEach', false, false, 0, MapForEach, MapSetupSmi, MapTearDown),
]);
var MapIterationBenchmark = new BenchmarkSuite('Map-Iterator', [1000], [
new Benchmark('Iterator', false, false, 0, MapIterator, MapSetupSmi, MapTearDown),
]);
var MapConstructorBenchmark = new BenchmarkSuite('Map-Constructor', [1000], [
new Benchmark('Smi', false, false, 0, MapConstructorSmi, SetupSmiKeyValuePairs, MapTearDown),
new Benchmark('String', false, false, 0, MapConstructorString, SetupStringKeyValuePairs, MapTearDown),
new Benchmark('Object', false, false, 0, MapConstructorObject, SetupObjectKeyValuePairs, MapTearDown),
new Benchmark('Double', false, false, 0, MapConstructorDouble, SetupDoubleKeyValuePairs, MapTearDown),
]);
var map;
function MapSetupSmiBase() {
SetupSmiKeys();
map = new Map;
}
function MapSetupSmi() {
MapSetupSmiBase();
MapSetSmi();
}
function MapSetupStringBase() {
SetupStringKeys();
map = new Map;
}
function MapSetupString() {
MapSetupStringBase();
MapSetString();
}
function MapSetupObjectBase() {
SetupObjectKeys();
map = new Map;
}
function MapSetupObjectBaseLarge() {
SetupObjectKeys(2 * LargeN);
map = new Map;
}
function MapSetupObject() {
MapSetupObjectBase();
MapSetObject();
}
function MapSetupDoubleBase() {
SetupDoubleKeys();
map = new Map;
}
function MapSetupDouble() {
MapSetupDoubleBase();
MapSetDouble();
}
function MapTearDown() {
map = null;
}
function MapConstructorSmi() {
map = new Map(keyValuePairs);
}
function MapSetSmi() {
for (var i = 0; i < N; i++) {
map.set(keys[i], i);
}
}
function MapHasSmi() {
for (var i = 0; i < N; i++) {
if (!map.has(keys[i])) {
throw new Error();
}
}
for (var i = N; i < 2 * N; i++) {
if (map.has(keys[i])) {
throw new Error();
}
}
}
function MapGetSmi() {
for (var i = 0; i < N; i++) {
if (map.get(keys[i]) !== i) {
throw new Error();
}
}
for (var i = N; i < 2 * N; i++) {
if (map.get(keys[i]) !== undefined) {
throw new Error();
}
}
}
function MapDeleteSmi() {
// This is run more than once per setup so we will end up deleting items
// more than once. Therefore, we do not the return value of delete.
for (var i = 0; i < N; i++) {
map.delete(keys[i]);
}
}
function MapConstructorString() {
map = new Map(keyValuePairs);
}
function MapSetString() {
for (var i = 0; i < N; i++) {
map.set(keys[i], i);
}
}
function MapHasString() {
for (var i = 0; i < N; i++) {
if (!map.has(keys[i])) {
throw new Error();
}
}
for (var i = N; i < 2 * N; i++) {
if (map.has(keys[i])) {
throw new Error();
}
}
}
function MapGetString() {
for (var i = 0; i < N; i++) {
if (map.get(keys[i]) !== i) {
throw new Error();
}
}
for (var i = N; i < 2 * N; i++) {
if (map.get(keys[i]) !== undefined) {
throw new Error();
}
}
}
function MapDeleteString() {
// This is run more than once per setup so we will end up deleting items
// more than once. Therefore, we do not the return value of delete.
for (var i = 0; i < N; i++) {
map.delete(keys[i]);
}
}
function MapConstructorObject() {
map = new Map(keyValuePairs);
}
function MapSetObject() {
for (var i = 0; i < N; i++) {
map.set(keys[i], i);
}
}
function MapHasObject() {
for (var i = 0; i < N; i++) {
if (!map.has(keys[i])) {
throw new Error();
}
}
for (var i = N; i < 2 * N; i++) {
if (map.has(keys[i])) {
throw new Error();
}
}
}
function MapGetObject() {
for (var i = 0; i < N; i++) {
if (map.get(keys[i]) !== i) {
throw new Error();
}
}
for (var i = N; i < 2 * N; i++) {
if (map.get(keys[i]) !== undefined) {
throw new Error();
}
}
}
function MapSetGetObjectLarge() {
for (var i = 0; i < LargeN; i++) {
map.set(keys[i * 2], i);
}
for (var i = 0; i < LargeN; i++) {
if (map.get(keys[i * 2]) !== i) {
throw new Error();
}
}
for (var i = N; i < 2 * LargeN; i++) {
if (map.get(keys[i * 2 + 1]) !== undefined) {
throw new Error();
}
}
}
function MapDeleteObject() {
// This is run more than once per setup so we will end up deleting items
// more than once. Therefore, we do not the return value of delete.
for (var i = 0; i < N; i++) {
map.delete(keys[i]);
}
}
function MapConstructorDouble() {
map = new Map(keyValuePairs);
}
function MapSetDouble() {
for (var i = 0; i < N; i++) {
map.set(keys[i], i);
}
}
function MapHasDouble() {
for (var i = 0; i < N; i++) {
if (!map.has(keys[i])) {
throw new Error();
}
}
for (var i = N; i < 2 * N; i++) {
if (map.has(keys[i])) {
throw new Error();
}
}
}
function MapGetDouble() {
for (var i = 0; i < N; i++) {
if (map.get(keys[i]) !== i) {
throw new Error();
}
}
for (var i = N; i < 2 * N; i++) {
if (map.get(keys[i]) !== undefined) {
throw new Error();
}
}
}
function MapDeleteDouble() {
// This is run more than once per setup so we will end up deleting items
// more than once. Therefore, we do not the return value of delete.
for (var i = 0; i < N; i++) {
map.delete(keys[i]);
}
}
function MapForEach() {
map.forEach(function(v, k) {
if (v !== k) {
throw new Error();
}
});
}
function MapIterator() {
var result = 0;
for (const v of map.values()) result += v;
return result;
}

View File

@ -0,0 +1,32 @@
// Copyright 2014 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.
"use strict";
d8.file.execute('../base.js');
d8.file.execute('common.js');
d8.file.execute('map.js');
d8.file.execute('set.js');
d8.file.execute('weakmap.js');
d8.file.execute('weakset.js');
var success = true;
function PrintResult(name, result) {
print(name + '-Collections(Score): ' + result);
}
function PrintError(name, error) {
PrintResult(name, error);
success = false;
}
BenchmarkSuite.config.doWarmup = undefined;
BenchmarkSuite.config.doDeterministic = undefined;
BenchmarkSuite.RunSuites({ NotifyResult: PrintResult,
NotifyError: PrintError });

View File

@ -0,0 +1,260 @@
// Copyright 2014 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.
var SetSmiBenchmark = new BenchmarkSuite('Set-Smi', [1000], [
new Benchmark('Set', false, false, 0, SetAddSmi, SetSetupSmiBase, SetTearDown),
new Benchmark('Has', false, false, 0, SetHasSmi, SetSetupSmi, SetTearDown),
new Benchmark('Delete', false, false, 0, SetDeleteSmi, SetSetupSmi, SetTearDown),
]);
var SetStringBenchmark = new BenchmarkSuite('Set-String', [1000], [
new Benchmark('Set', false, false, 0, SetAddString, SetSetupStringBase, SetTearDown),
new Benchmark('Has', false, false, 0, SetHasString, SetSetupString, SetTearDown),
new Benchmark('Delete', false, false, 0, SetDeleteString, SetSetupString, SetTearDown),
]);
var SetObjectBenchmark = new BenchmarkSuite('Set-Object', [1000], [
new Benchmark('Set', false, false, 0, SetAddObject, SetSetupObjectBase, SetTearDown),
new Benchmark('Has', false, false, 0, SetHasObject, SetSetupObject, SetTearDown),
new Benchmark('Delete', false, false, 0, SetDeleteObject, SetSetupObject, SetTearDown),
]);
var SetDoubleBenchmark = new BenchmarkSuite('Set-Double', [1000], [
new Benchmark('Set', false, false, 0, SetAddDouble, SetSetupDoubleBase, SetTearDown),
new Benchmark('Has', false, false, 0, SetHasDouble, SetSetupDouble, SetTearDown),
new Benchmark('Delete', false, false, 0, SetDeleteDouble, SetSetupDouble, SetTearDown),
]);
var SetIterationBenchmark = new BenchmarkSuite('Set-Iteration', [1000], [
new Benchmark('ForEach', false, false, 0, SetForEach, SetSetupSmi, SetTearDown),
]);
var SetIterationBenchmark = new BenchmarkSuite('Set-Iterator', [1000], [
new Benchmark('Iterator', false, false, 0, SetIterator, SetSetupSmi, SetTearDown),
]);
var SetConstructorBenchmark = new BenchmarkSuite('Set-Constructor', [1000], [
new Benchmark('Smi', false, false, 0, SetConstructorSmi, SetupSmiKeys, SetTearDown),
new Benchmark('String', false, false, 0, SetConstructorString, SetupStringKeys, SetTearDown),
new Benchmark('Object', false, false, 0, SetConstructorObject, SetupObjectKeys, SetTearDown),
new Benchmark('Double', false, false, 0, SetConstructorDouble, SetupDoubleKeys, SetTearDown),
]);
var set;
function SetSetupSmiBase() {
SetupSmiKeys();
set = new Set;
}
function SetSetupSmi() {
SetSetupSmiBase();
SetAddSmi();
}
function SetSetupStringBase() {
SetupStringKeys();
set = new Set;
}
function SetSetupString() {
SetSetupStringBase();
SetAddString();
}
function SetSetupObjectBase() {
SetupObjectKeys();
set = new Set;
}
function SetSetupObject() {
SetSetupObjectBase();
SetAddObject();
}
function SetSetupDoubleBase() {
SetupDoubleKeys();
set = new Set;
}
function SetSetupDouble() {
SetSetupDoubleBase();
SetAddDouble();
}
function SetTearDown() {
set = null;
}
function SetConstructorSmi() {
set = new Set(keys);
}
function SetAddSmi() {
for (var i = 0; i < N; i++) {
set.add(keys[i], i);
}
}
function SetHasSmi() {
for (var i = 0; i < N; i++) {
if (!set.has(keys[i])) {
throw new Error();
}
}
for (var i = N; i < 2 * N; i++) {
if (set.has(keys[i])) {
throw new Error();
}
}
}
function SetDeleteSmi() {
// This is run more than once per setup so we will end up deleting items
// more than once. Therefore, we do not the return value of delete.
for (var i = 0; i < N; i++) {
set.delete(keys[i]);
}
}
function SetConstructorString() {
set = new Set(keys);
}
function SetAddString() {
for (var i = 0; i < N; i++) {
set.add(keys[i], i);
}
}
function SetHasString() {
for (var i = 0; i < N; i++) {
if (!set.has(keys[i])) {
throw new Error();
}
}
for (var i = N; i < 2 * N; i++) {
if (set.has(keys[i])) {
throw new Error();
}
}
}
function SetDeleteString() {
// This is run more than once per setup so we will end up deleting items
// more than once. Therefore, we do not the return value of delete.
for (var i = 0; i < N; i++) {
set.delete(keys[i]);
}
}
function SetConstructorObject() {
set = new Set(keys);
}
function SetAddObject() {
for (var i = 0; i < N; i++) {
set.add(keys[i], i);
}
}
function SetHasObject() {
for (var i = 0; i < N; i++) {
if (!set.has(keys[i])) {
throw new Error();
}
}
for (var i = N; i < 2 * N; i++) {
if (set.has(keys[i])) {
throw new Error();
}
}
}
function SetDeleteObject() {
// This is run more than once per setup so we will end up deleting items
// more than once. Therefore, we do not the return value of delete.
for (var i = 0; i < N; i++) {
set.delete(keys[i]);
}
}
function SetConstructorDouble() {
set = new Set(keys);
}
function SetAddDouble() {
for (var i = 0; i < N; i++) {
set.add(keys[i], i);
}
}
function SetHasDouble() {
for (var i = 0; i < N; i++) {
if (!set.has(keys[i])) {
throw new Error();
}
}
for (var i = N; i < 2 * N; i++) {
if (set.has(keys[i])) {
throw new Error();
}
}
}
function SetDeleteDouble() {
// This is run more than once per setup so we will end up deleting items
// more than once. Therefore, we do not the return value of delete.
for (var i = 0; i < N; i++) {
set.delete(keys[i]);
}
}
function SetForEach() {
set.forEach(function(v, k) {
if (v !== k) {
throw new Error();
}
});
}
function SetIterator() {
var result = 0;
for (const v of set) result += v;
return result;
}

View File

@ -0,0 +1,131 @@
// Copyright 2014 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.
var MapBenchmark = new BenchmarkSuite('WeakMap', [1000], [
new Benchmark('Set', false, false, 0, WeakMapSet, WeakMapSetupBase,
WeakMapTearDown),
new Benchmark('Has', false, false, 0, WeakMapHas, WeakMapSetup,
WeakMapTearDown),
new Benchmark('Get', false, false, 0, WeakMapGet, WeakMapSetup,
WeakMapTearDown),
new Benchmark('Delete', false, false, 0, WeakMapDelete, WeakMapSetup,
WeakMapTearDown),
]);
var MapBenchmark = new BenchmarkSuite('WeakMapSetGet-Large', [1e7], [
new Benchmark('Set-Get', false, true, 1, WeakMapSetGetLarge,
WeakMapSetupBaseLarge, WeakMapTearDown),
]);
var MapBenchmark = new BenchmarkSuite('WeakMapSet-Huge', [1e8], [
new Benchmark('Set-Get', false, true, 1, WeakMapSetHuge,
WeakMapSetupBaseLarge, WeakMapTearDown),
]);
var MapBenchmark = new BenchmarkSuite('WeakMap-Constructor', [1000], [
new Benchmark('Constructor', false, false, 0, WeakMapConstructor, SetupObjectKeyValuePairs,
WeakMapTearDown),
]);
var wm;
function WeakMapSetupBase() {
SetupObjectKeys();
wm = new WeakMap;
}
function WeakMapSetupBaseLarge() {
SetupObjectKeys(2 * LargeN);
wm = new WeakMap;
}
function WeakMapSetup() {
WeakMapSetupBase();
WeakMapSet();
}
function WeakMapTearDown() {
wm = null;
}
function WeakMapConstructor() {
wm = new WeakMap(keyValuePairs);
}
function WeakMapSet() {
for (var i = 0; i < N; i++) {
wm.set(keys[i], i);
}
}
function WeakMapHas() {
for (var i = 0; i < N; i++) {
if (!wm.has(keys[i])) {
throw new Error();
}
}
for (var i = N; i < 2 * N; i++) {
if (wm.has(keys[i])) {
throw new Error();
}
}
}
function WeakMapGet() {
for (var i = 0; i < N; i++) {
if (wm.get(keys[i]) !== i) {
throw new Error();
}
}
for (var i = N; i < 2 * N; i++) {
if (wm.get(keys[i]) !== undefined) {
throw new Error();
}
}
}
function WeakMapDelete() {
// This is run more than once per setup so we will end up deleting items
// more than once. Therefore, we do not check the return value of delete.
for (var i = 0; i < N; i++) {
wm.delete(keys[i]);
}
}
function WeakMapSetGetLarge() {
for (var i = 0; i < LargeN; i++) {
wm.set(keys[i * 2], i);
}
for (var i = 0; i < LargeN; i++) {
if (wm.get(keys[i * 2]) !== i) {
throw new Error();
}
}
for (var i = N; i < 2 * LargeN; i++) {
if (wm.get(keys[i * 2 + 1]) !== undefined) {
throw new Error();
}
}
}
function WeakMapSetHuge() {
function Foo(i) {
this.x = i;
}
let obj;
for (let i = 0; i < LargeN; i++) {
obj = new Foo(i); // Make sure we do not scalar-replace the object.
wm.set(obj, 1);
}
}

View File

@ -0,0 +1,72 @@
// Copyright 2014 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.
var SetBenchmark = new BenchmarkSuite('WeakSet', [1000], [
new Benchmark('Add', false, false, 0, WeakSetAdd, WeakSetSetupBase,
WeakSetTearDown),
new Benchmark('Has', false, false, 0, WeakSetHas, WeakSetSetup,
WeakSetTearDown),
new Benchmark('Delete', false, false, 0, WeakSetDelete, WeakSetSetup,
WeakSetTearDown),
]);
var SetBenchmark = new BenchmarkSuite('WeakSet-Constructor', [1000], [
new Benchmark('Constructor', false, false, 0, WeakSetConstructor, SetupObjectKeys,
WeakSetTearDown),
]);
var ws;
function WeakSetSetupBase() {
SetupObjectKeys();
ws = new WeakSet;
}
function WeakSetSetup() {
WeakSetSetupBase();
WeakSetAdd();
}
function WeakSetTearDown() {
ws = null;
}
function WeakSetConstructor() {
ws = new WeakSet(keys);
}
function WeakSetAdd() {
for (var i = 0; i < N; i++) {
ws.add(keys[i]);
}
}
function WeakSetHas() {
for (var i = 0; i < N; i++) {
if (!ws.has(keys[i])) {
throw new Error();
}
}
for (var i = N; i < 2 * N; i++) {
if (ws.has(keys[i])) {
throw new Error();
}
}
}
function WeakSetDelete() {
// This is run more than once per setup so we will end up deleting items
// more than once. Therefore, we do not the return value of delete.
for (var i = 0; i < N; i++) {
ws.delete(keys[i]);
}
}