mirror of https://github.com/vuejs/core.git
93 lines
2.0 KiB
TypeScript
93 lines
2.0 KiB
TypeScript
import { bench } from 'vitest'
|
|
import { computed, reactive, readonly, shallowRef, triggerRef } from '../src'
|
|
|
|
for (let amount = 1e1; amount < 1e4; amount *= 10) {
|
|
{
|
|
const rawArray = []
|
|
for (let i = 0, n = amount; i < n; i++) {
|
|
rawArray.push(i)
|
|
}
|
|
const r = reactive(rawArray)
|
|
const c = computed(() => {
|
|
return r.reduce((v, a) => a + v, 0)
|
|
})
|
|
|
|
bench(`reduce *reactive* array, ${amount} elements`, () => {
|
|
for (let i = 0, n = r.length; i < n; i++) {
|
|
r[i]++
|
|
}
|
|
c.value
|
|
})
|
|
}
|
|
|
|
{
|
|
const rawArray = []
|
|
for (let i = 0, n = amount; i < n; i++) {
|
|
rawArray.push(i)
|
|
}
|
|
const r = reactive(rawArray)
|
|
const c = computed(() => {
|
|
return r.reduce((v, a) => a + v, 0)
|
|
})
|
|
|
|
bench(
|
|
`reduce *reactive* array, ${amount} elements, only change first value`,
|
|
() => {
|
|
r[0]++
|
|
c.value
|
|
}
|
|
)
|
|
}
|
|
|
|
{
|
|
const rawArray = []
|
|
for (let i = 0, n = amount; i < n; i++) {
|
|
rawArray.push(i)
|
|
}
|
|
const r = reactive({ arr: readonly(rawArray) })
|
|
const c = computed(() => {
|
|
return r.arr.reduce((v, a) => a + v, 0)
|
|
})
|
|
|
|
bench(`reduce *readonly* array, ${amount} elements`, () => {
|
|
r.arr = r.arr.map(v => v + 1)
|
|
c.value
|
|
})
|
|
}
|
|
|
|
{
|
|
const rawArray = []
|
|
for (let i = 0, n = amount; i < n; i++) {
|
|
rawArray.push(i)
|
|
}
|
|
const r = shallowRef(rawArray)
|
|
const c = computed(() => {
|
|
return r.value.reduce((v, a) => a + v, 0)
|
|
})
|
|
|
|
bench(`reduce *raw* array, copied, ${amount} elements`, () => {
|
|
r.value = r.value.map(v => v + 1)
|
|
c.value
|
|
})
|
|
}
|
|
|
|
{
|
|
const rawArray: number[] = []
|
|
for (let i = 0, n = amount; i < n; i++) {
|
|
rawArray.push(i)
|
|
}
|
|
const r = shallowRef(rawArray)
|
|
const c = computed(() => {
|
|
return r.value.reduce((v, a) => a + v, 0)
|
|
})
|
|
|
|
bench(`reduce *raw* array, manually triggered, ${amount} elements`, () => {
|
|
for (let i = 0, n = rawArray.length; i < n; i++) {
|
|
rawArray[i]++
|
|
}
|
|
triggerRef(r)
|
|
c.value
|
|
})
|
|
}
|
|
}
|