Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit521d5ed

Browse files
authored
Merge pull request#1187 from immerjs/feature/more-benchmarks-3
Add second large object test to check v8 non-fast properties
2 parents3955eed +8b341a5 commit521d5ed

File tree

1 file changed

+37
-34
lines changed

1 file changed

+37
-34
lines changed

‎perf-testing/immutability-benchmarks.mjs‎

Lines changed: 37 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ function createInitialState(arraySize = BENCHMARK_CONFIG.arraySize) {
4444
name:`name-${i}`,
4545
isActive:i%2===0
4646
})),
47-
largeObject:createLargeObject(BENCHMARK_CONFIG.largeObjectSize),
47+
largeObject1:createLargeObject(BENCHMARK_CONFIG.largeObjectSize1),
48+
largeObject2:createLargeObject(BENCHMARK_CONFIG.largeObjectSize2),
4849
api:{
4950
queries:{},
5051
provided:{
@@ -62,7 +63,8 @@ const BENCHMARK_CONFIG = {
6263
iterations:1,
6364
arraySize:100,
6465
nestedArraySize:10,
65-
largeObjectSize:1000,
66+
largeObjectSize1:1000,
67+
largeObjectSize2:3000,
6668
multiUpdateCount:5,
6769
reuseStateIterations:10
6870
}
@@ -104,8 +106,12 @@ const update = index => ({
104106
type:"test/updateItem",
105107
payload:{id:index,value:index,nestedData:index}
106108
})
107-
constupdateLargeObject=index=>({
108-
type:"test/updateLargeObject",
109+
constupdateLargeObject1=index=>({
110+
type:"test/updateLargeObject1",
111+
payload:{value:index}
112+
})
113+
constupdateLargeObject2=index=>({
114+
type:"test/updateLargeObject2",
109115
payload:{value:index}
110116
})
111117
constconcat=index=>({
@@ -174,10 +180,12 @@ const actions = {
174180
remove,
175181
filter,
176182
update,
177-
updateLargeObject,
178183
concat,
179184
mapNested,
180185
// dash-named fields to improve readability in benchmark results
186+
187+
"update-largeObject1":updateLargeObject1,
188+
"update-largeObject2":updateLargeObject2,
181189
"update-high":updateHigh,
182190
"update-multiple":updateMultiple,
183191
"remove-high":removeHigh,
@@ -332,11 +340,22 @@ const vanillaReducer = (state = createInitialState(), action) => {
332340
)
333341
}
334342
}
335-
case"test/updateLargeObject":{
343+
case"test/updateLargeObject1":{
344+
return{
345+
...state,
346+
largeObject1:{
347+
...state.largeObject1,
348+
[`propertyAdded${action.payload.value}`]:{
349+
id:action.payload.value
350+
}
351+
}
352+
}
353+
}
354+
case"test/updateLargeObject2":{
336355
return{
337356
...state,
338-
largeObject:{
339-
...state.largeObject,
357+
largeObject2:{
358+
...state.largeObject2,
340359
[`propertyAdded${action.payload.value}`]:{
341360
id:action.payload.value
342361
}
@@ -462,8 +481,14 @@ const createImmerReducer = produce => {
462481
item.nested.data=action.payload.nestedData
463482
break
464483
}
465-
case"test/updateLargeObject":{
466-
draft.largeObject[`propertyAdded${action.payload.value}`]={
484+
case"test/updateLargeObject1":{
485+
draft.largeObject1[`propertyAdded${action.payload.value}`]={
486+
id:action.payload.value
487+
}
488+
break
489+
}
490+
case"test/updateLargeObject2":{
491+
draft.largeObject2[`propertyAdded${action.payload.value}`]={
467492
id:action.payload.value
468493
}
469494
break
@@ -597,7 +622,8 @@ function createBenchmarks() {
597622
"update-high",
598623
"remove",
599624
"remove-high",
600-
"updateLargeObject"
625+
"update-largeObject1",
626+
"update-largeObject2"
601627
]
602628
for(constactionofreuseActions){
603629
summary(function(){
@@ -1191,13 +1217,6 @@ function printOverallVersionRankings(versionScores) {
11911217
return
11921218
}
11931219

1194-
console.log(
1195-
"\nMethodology: Lower geometric mean = better overall performance"
1196-
)
1197-
console.log(
1198-
"(Geometric mean is standard for benchmarking as it handles multiplicative performance differences)"
1199-
)
1200-
12011220
console.log("\n┌──────┬─────────────────────┬─────────────────┬───────────┐")
12021221
console.log("│ Rank │ Version │ Geometric Mean │ Scenarios │")
12031222
console.log("├──────┼─────────────────────┼─────────────────┼───────────┤")
@@ -1216,22 +1235,6 @@ function printOverallVersionRankings(versionScores) {
12161235
}
12171236

12181237
console.log("└──────┴─────────────────────┴─────────────────┴───────────┘")
1219-
1220-
// Highlight top performers
1221-
if(versionScores.length>=3){
1222-
console.log("\nTop Overall Performers:")
1223-
for(leti=0;i<Math.min(10,versionScores.length);i++){
1224-
constscore=versionScores[i]
1225-
const[versionName,freezeIndicator]=score.version.split("|")
1226-
constshortName=shortenVersionName(versionName)
1227-
console.log(
1228-
`${i+
1229-
1}.${shortName} (${freezeIndicator}) -${score.geometricMean.toFixed(
1230-
2
1231-
)}x average`
1232-
)
1233-
}
1234-
}
12351238
}
12361239

12371240
functionprintBenchmarkSummaryTable(benchmarks){

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp