| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- import { bench } from 'vitest'
- import {
- effect,
- reactive,
- shallowReadArray,
- } from '../dist/reactivity.esm-browser.prod'
- for (let amount = 1e1; amount < 1e4; amount *= 10) {
- {
- const rawArray: number[] = []
- for (let i = 0, n = amount; i < n; i++) {
- rawArray.push(i)
- }
- const arr = reactive(rawArray)
- bench(`track for loop, ${amount} elements`, () => {
- let sum = 0
- effect(() => {
- for (let i = 0; i < arr.length; i++) {
- sum += arr[i]
- }
- })
- })
- }
- {
- const rawArray: number[] = []
- for (let i = 0, n = amount; i < n; i++) {
- rawArray.push(i)
- }
- const arr = reactive(rawArray)
- bench(`track manual reactiveReadArray, ${amount} elements`, () => {
- let sum = 0
- effect(() => {
- const raw = shallowReadArray(arr)
- for (let i = 0; i < raw.length; i++) {
- sum += raw[i]
- }
- })
- })
- }
- {
- const rawArray: number[] = []
- for (let i = 0, n = amount; i < n; i++) {
- rawArray.push(i)
- }
- const arr = reactive(rawArray)
- bench(`track iteration, ${amount} elements`, () => {
- let sum = 0
- effect(() => {
- for (let x of arr) {
- sum += x
- }
- })
- })
- }
- {
- const rawArray: number[] = []
- for (let i = 0, n = amount; i < n; i++) {
- rawArray.push(i)
- }
- const arr = reactive(rawArray)
- bench(`track forEach, ${amount} elements`, () => {
- let sum = 0
- effect(() => {
- arr.forEach(x => (sum += x))
- })
- })
- }
- {
- const rawArray: number[] = []
- for (let i = 0, n = amount; i < n; i++) {
- rawArray.push(i)
- }
- const arr = reactive(rawArray)
- bench(`track reduce, ${amount} elements`, () => {
- let sum = 0
- effect(() => {
- sum = arr.reduce((v, a) => a + v, 0)
- })
- })
- }
- {
- const rawArray: any[] = []
- for (let i = 0, n = amount; i < n; i++) {
- rawArray.push(i)
- }
- const r = reactive(rawArray)
- effect(() => r.reduce((v, a) => a + v, 0))
- bench(`trigger index mutation (1st only), tracked with reduce, ${amount} elements`, () => {
- r[0]++
- })
- }
- {
- const rawArray: any[] = []
- for (let i = 0, n = amount; i < n; i++) {
- rawArray.push(i)
- }
- const r = reactive(rawArray)
- effect(() => r.reduce((v, a) => a + v, 0))
- bench(`trigger index mutation (all), tracked with reduce, ${amount} elements`, () => {
- for (let i = 0, n = r.length; i < n; i++) {
- r[i]++
- }
- })
- }
- {
- const rawArray: number[] = []
- for (let i = 0, n = amount; i < n; i++) {
- rawArray.push(i)
- }
- const arr = reactive(rawArray)
- let sum = 0
- effect(() => {
- for (let x of arr) {
- sum += x
- }
- })
- bench(`push() trigger, tracked via iteration, ${amount} elements`, () => {
- arr.push(1)
- })
- }
- {
- const rawArray: number[] = []
- for (let i = 0, n = amount; i < n; i++) {
- rawArray.push(i)
- }
- const arr = reactive(rawArray)
- let sum = 0
- effect(() => {
- arr.forEach(x => (sum += x))
- })
- bench(`push() trigger, tracked via forEach, ${amount} elements`, () => {
- arr.push(1)
- })
- }
- }
|