Skip to content
Vitest 2
Main Navigation ÚtmutatóAPIKonfigurációBöngésző módHaladó
2.1.9
1.6.1
0.34.6

magyar

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština

magyar

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština

Megjelenés

Sidebar Navigation

Miért a Vitest?

Első lépések

Funkciók

Munkaterület

Parancssori felület

Tesztszűrés

Reporterek

Lefedettség

Pillanatképek

Mockolás

Típusok tesztelése

Vitest UI

Forráskódba épített tesztelés

Tesztkörnyezet

Tesztkörnyezet

Egyezésvizsgálók kiterjesztése

IDE integrációk

Hibakeresés

Összehasonlítás más tesztfuttatókkal

Migrálási útmutató

Gyakori hibák

Profiling Test Performance

A teljesítmény javítása

Ezen az oldalon

Tesztelési teljesítmény profilozása ​

Amikor futtatja a Vitestet, az több időmetrikát is megjelenít a tesztjeiről:

bash
RUN  v2.1.1 /x/vitest/examples/profiling

✓ test/prime-number.test.ts (1) 4517ms
  ✓ generate prime number 4517ms

Test Files  1 passed (1)
     Tests  1 passed (1)
  Start at  09:32:53
  Duration  4.80s (transform 44ms, setup 0ms, collect 35ms, tests 4.52s, environment 0ms, prepare 81ms)
  # Időmetrikák (lásd fent)
  • Transform: Mennyi időt vett igénybe a fájlok átalakítása. Lásd: Fájl átalakítás.
  • Setup: A setupFiles fájlok futtatásával eltöltött idő.
  • Collect: A tesztfájlokban lévő összes teszt összegyűjtésére fordított idő. Ez tartalmazza az összes fájlfüggőség importálásához szükséges időt is.
  • Tests: A tesztesetek tényleges futtatásával eltöltött idő.
  • Environment: A teszt environment beállítására fordított idő, például JSDOM.
  • Prepare: A Vitest által a tesztfuttató előkészítésével eltöltött idő.

Tesztfuttató ​

Ha a teszt futási ideje magas, létrehozhat egy tesztfuttató profilt. Lásd a NodeJS dokumentációját a következő opciókról:

  • --cpu-prof
  • --heap-prof
  • --prof

WARNING

A --prof opció nem működik a pool: 'threads' beállítással a node:worker_threads korlátozásai miatt.

Ezen opciók Vitest tesztfuttatójának való átadásához definiálja a poolOptions.<pool>.execArgv értéket a Vitest konfigurációjában:

ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    pool: 'forks',
    poolOptions: {
      forks: {
        execArgv: [
          '--cpu-prof',
          '--cpu-prof-dir=test-runner-profile',
          '--heap-prof',
          '--heap-prof-dir=test-runner-profile',
        ],

        // Egyetlen profil generálásához
        singleFork: true,
      },
    },
  },
});
ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    pool: 'threads',
    poolOptions: {
      threads: {
        execArgv: [
          '--cpu-prof',
          '--cpu-prof-dir=test-runner-profile',
          '--heap-prof',
          '--heap-prof-dir=test-runner-profile',
        ],

        // Egyetlen profil generálásához
        singleThread: true,
      },
    },
  },
});

A tesztek futtatása után test-runner-profile/*.cpuprofile és test-runner-profile/*.heapprofile fájlok generálódnak. Lásd a Profilozási rekordok vizsgálata részt a fájlok elemzéséhez.

Példáért lásd: Profiling | Examples.

Fő szál ​

A fő szál profilozása hasznos a Vitest Vite használatának és a globalSetup fájlok hibakereséséhez. Itt futnak a Vite pluginok is.

TIP

Performance | Vite további tippeket tartalmaz a Vite-specifikus profilozásról.

Javasoljuk a vite-plugin-inspect használatát a Vite pluginok teljesítményének elemzéséhez.

Ehhez argumentumokat kell átadni a Vitestet futtató Node folyamatnak.

bash
$ node --cpu-prof --cpu-prof-dir=main-profile ./node_modules/vitest/vitest.mjs --run
#      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                  ^^^^^
#               NodeJS argumentumok                                           Vitest argumentumok

A tesztek futtatása után main-profile/*.cpuprofile fájl generálódik. Lásd a Profilozási rekordok vizsgálata részt a fájlok elemzéséhez.

Fájl átalakítás ​

Ha a teszt átalakítási és gyűjtési ideje magas, használhatja a DEBUG=vite-node:* környezeti változót, hogy lássa, mely fájlokat alakítja át és hajtja végre a vite-node.

bash
$ DEBUG=vite-node:* vitest --run

 RUN  v2.1.1 /x/vitest/examples/profiling

  vite-node:server:request /x/vitest/examples/profiling/global-setup.ts +0ms
  vite-node:client:execute /x/vitest/examples/profiling/global-setup.ts +0ms
  vite-node:server:request /x/vitest/examples/profiling/test/prime-number.test.ts +45ms
  vite-node:client:execute /x/vitest/examples/profiling/test/prime-number.test.ts +26ms
  vite-node:server:request /src/prime-number.ts +9ms
  vite-node:client:execute /x/vitest/examples/profiling/src/prime-number.ts +9ms
  vite-node:server:request /src/unnecessary-file.ts +6ms
  vite-node:client:execute /x/vitest/examples/profiling/src/unnecessary-file.ts +4ms
...

Ez a profilozási stratégia hatékonyan azonosítja a barrel fájlok által okozott felesleges átalakításokat. Ha ezek a naplók olyan fájlokat tartalmaznak, amelyeket nem szabadna betölteni a teszt futtatásakor, akkor valószínűleg feleslegesen importáló barrel fájljai vannak.

A Vitest UI segítségével is hibakeresést végezhet a barrel fájlok által okozott lassúságon. Az alábbi példa mutatja, hogy barrel fájl nélküli importálással ~85%-kal csökken az átalakított fájlok száma.

├── src
│   └── utils
│       ├── currency.ts
│       ├── formatters.ts  <-- Tesztelendő fájl
│       ├── index.ts
│       ├── location.ts
│       ├── math.ts
│       ├── time.ts
│       └── users.ts
├── test
│   └── formatters.test.ts
└── vitest.config.ts
ts
import { expect, test } from 'vitest';
import { formatter } from '../src/utils'; 
import { formatter } from '../src/utils/formatters'; 

test('formatter works', () => {
  expect(formatter).not.toThrow();
});
Vitest UI demonstrating barrel file issues

A fájlok átalakításának megtekintéséhez használhatja a VITE_NODE_DEBUG_DUMP környezeti változót, hogy az átalakított fájlokat a fájlrendszerbe írja:

bash
$ VITE_NODE_DEBUG_DUMP=true vitest --run

[vite-node] [debug] dump modules to /x/examples/profiling/.vite-node/dump

 RUN  v2.1.1 /x/vitest/examples/profiling
...

$ ls .vite-node/dump/
_x_examples_profiling_global-setup_ts-1292904907.js
_x_examples_profiling_test_prime-number_test_ts-1413378098.js
_src_prime-number_ts-525172412.js

Profilozási rekordok vizsgálata ​

A *.cpuprofile és *.heapprofile fájlok tartalmát különböző eszközökkel elemezheti. Példákat az alábbi listában talál.

  • Speedscope
  • Performance Profiling JavaScript in Visual Studio Code
  • Profile Node.js performance with the Performance panel | developer.chrome.com
  • Memory panel overview | developer.chrome.com
Pager
Előző oldalGyakori hibák
Következő oldalA teljesítmény javítása

A MIT licenc alapján kiadva.

Copyright (c) 2024 Mithril Contributors

https://v2.vitest.dev/guide/profiling-test-performance

A MIT licenc alapján kiadva.

Copyright (c) 2024 Mithril Contributors