workflow: bench against bundled dist file to avoid import access overhead

ref https://github.com/vitest-dev/vitest/issues/6903
This commit is contained in:
Evan You 2024-11-14 08:38:48 +08:00
parent 3656364b06
commit e9f3e6b546
No known key found for this signature in database
GPG Key ID: 00E9AB7A6704CE0A
9 changed files with 29 additions and 8 deletions

View File

@ -22,6 +22,8 @@
"test-dts": "run-s build-dts test-dts-only", "test-dts": "run-s build-dts test-dts-only",
"test-dts-only": "tsc -p packages-private/dts-built-test/tsconfig.json && tsc -p ./packages-private/dts-test/tsconfig.test.json", "test-dts-only": "tsc -p packages-private/dts-built-test/tsconfig.json && tsc -p ./packages-private/dts-test/tsconfig.test.json",
"test-coverage": "vitest run --project unit --coverage", "test-coverage": "vitest run --project unit --coverage",
"prebench": "node scripts/build.js -pf esm-browser reactivity",
"prebench-compare": "node scripts/build.js -pf esm-browser reactivity",
"bench": "vitest bench --project=unit --outputJson=temp/bench.json", "bench": "vitest bench --project=unit --outputJson=temp/bench.json",
"bench-compare": "vitest bench --project=unit --compare=temp/bench.json", "bench-compare": "vitest bench --project=unit --compare=temp/bench.json",
"release": "node scripts/release.js", "release": "node scripts/release.js",

View File

@ -1,5 +1,10 @@
import { bench, describe } from 'vitest' import { bench, describe } from 'vitest'
import { type ComputedRef, type Ref, computed, effect, ref } from '../src' import type { ComputedRef, Ref } from '../src'
import { computed, effect, ref } from '../dist/reactivity.esm-browser.prod'
declare module '../dist/reactivity.esm-browser.prod' {
function computed(...args: any[]): any
}
describe('computed', () => { describe('computed', () => {
bench('create computed', () => { bench('create computed', () => {

View File

@ -1,5 +1,6 @@
import { bench, describe } from 'vitest' import { bench, describe } from 'vitest'
import { type Ref, effect, ref } from '../src' import type { Ref } from '../src'
import { effect, ref } from '../dist/reactivity.esm-browser.prod'
describe('effect', () => { describe('effect', () => {
{ {

View File

@ -1,5 +1,9 @@
import { bench } from 'vitest' import { bench } from 'vitest'
import { effect, reactive, shallowReadArray } from '../src' import {
effect,
reactive,
shallowReadArray,
} from '../dist/reactivity.esm-browser.prod'
for (let amount = 1e1; amount < 1e4; amount *= 10) { for (let amount = 1e1; amount < 1e4; amount *= 10) {
{ {

View File

@ -1,5 +1,6 @@
import { bench } from 'vitest' import { bench } from 'vitest'
import { type ComputedRef, computed, reactive } from '../src' import type { ComputedRef } from '../src'
import { computed, reactive } from '../dist/reactivity.esm-browser.prod'
function createMap(obj: Record<string, any>) { function createMap(obj: Record<string, any>) {
const map = new Map() const map = new Map()

View File

@ -1,5 +1,5 @@
import { bench } from 'vitest' import { bench } from 'vitest'
import { reactive } from '../src' import { reactive } from '../dist/reactivity.esm-browser.prod'
bench('create reactive obj', () => { bench('create reactive obj', () => {
reactive({ a: 1 }) reactive({ a: 1 })

View File

@ -1,5 +1,5 @@
import { bench, describe } from 'vitest' import { bench, describe } from 'vitest'
import { ref } from '../src/index' import { ref } from '../dist/reactivity.esm-browser.prod'
describe('ref', () => { describe('ref', () => {
bench('create ref', () => { bench('create ref', () => {

View File

@ -1,6 +1,10 @@
import { bench, describe } from 'vitest' import { bench, describe } from 'vitest'
import { createBuffer } from '../src/render' import { createBuffer as _createBuffer } from '../src/render'
// move to local const to avoid import access overhead
// https://github.com/vitest-dev/vitest/issues/6903
const createBuffer = _createBuffer
describe('createBuffer', () => { describe('createBuffer', () => {
let stringBuffer = createBuffer() let stringBuffer = createBuffer()

View File

@ -1,7 +1,11 @@
import { bench, describe } from 'vitest' import { bench, describe } from 'vitest'
import { type SSRBuffer, createBuffer } from '../src/render' import { type SSRBuffer, createBuffer } from '../src/render'
import { unrollBuffer } from '../src/renderToString' import { unrollBuffer as _unrollBuffer } from '../src/renderToString'
// move to local const to avoid import access overhead
// https://github.com/vitest-dev/vitest/issues/6903
const unrollBuffer = _unrollBuffer
function createSyncBuffer(levels: number, itemsPerLevel: number): SSRBuffer { function createSyncBuffer(levels: number, itemsPerLevel: number): SSRBuffer {
const buffer = createBuffer() const buffer = createBuffer()