Skip to content
Vitest 2
Main Navigation KılavuzAPIYapılandırmaTarayıcı Moduİleri
2.1.9
1.6.1
0.34.6

Türkçe

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

Türkçe

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

Görünüm

Sidebar Navigation

Neden Vitest

Başlangıç

Özellikler

Çalışma Alanı

Komut Satırı Arayüzü

Test Filtreleme

Raporlayıcılar

Kapsam

Anlık Görüntü (Snapshot) Testleri

Sahtecilik (Mocking)

Türleri Test Etme

Vitest Arayüzü

Kaynak İçi Test

Test Bağlamı

Test Ortamı

Eşleştiricileri Genişletme

IDE Tümleştirmeleri

Hata Ayıklama

Diğer Test Çalıştırıcılarıyla Karşılaştırmalar

Geçiş Rehberi

Yaygın Hatalar

Profiling Test Performance

Performansı İyileştirme

Bu sayfada

Test Performansını Profillendirme ​

Vitest'i çalıştırdığınızda, testlerinizin çeşitli zaman metriklerini raporlar:

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

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

Test Dosyaları  1 başarılı (1)
     Testler  1 başarılı (1)
  Başlangıç  09:32:53
  Süre  4.80s (Dönüştürme 44ms, Kurulum 0ms, Toplama 35ms, Testler 4.52s, Ortam 0ms, Hazırlık 81ms)
  # Zaman metrikleri ^^
  • Dönüştürme: Dosyaların dönüştürülmesi için harcanan süre. Bkz. Dosya Dönüştürme.
  • Kurulum: setupFiles dosyalarının çalıştırılması için harcanan süre.
  • Toplama: Test dosyalarındaki tüm testlerin toplanması için harcanan süre. Buna, tüm dosya bağımlılıklarını içe aktarmak için geçen süre de dahildir.
  • Testler: Test senaryolarının fiilen yürütülmesi için harcanan süre.
  • Ortam: Test environment (örneğin JSDOM) kurulumu için harcanan süre.
  • Hazırlık: Vitest'in test çalıştırıcısını hazırlamak için harcadığı süre.

Test Çalıştırıcısı ​

Test yürütme süreniz yüksek olduğunda, test çalıştırıcısının bir profilini oluşturabilirsiniz. Aşağıdaki seçenekler için NodeJS belgelerine bakın:

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

WARNING

--prof seçeneği, node:worker_threads sınırlamaları nedeniyle pool: 'threads' ile çalışmaz.

Bu seçenekleri Vitest'in test çalıştırıcısına geçirmek için, Vitest yapılandırmanızda poolOptions.<pool>.execArgv'yi tanımlayın:

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',
        ],

        // Tek bir profil oluşturmak için
        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',
        ],

        // Tek bir profil oluşturmak için
        singleThread: true,
      },
    },
  },
});

Testler çalıştıktan sonra test-runner-profile/*.cpuprofile ve test-runner-profile/*.heapprofile dosyaları oluşturulmuş olmalıdır. Bu dosyaları nasıl analiz edeceğinize ilişkin talimatlar için Profillendirme kayıtlarını inceleme bölümüne bakın.

Örnek için Profillendirme | Örnekler bölümüne bakın.

Ana İş Parçacığı ​

Ana iş parçacığını profillendirmek, Vitest'in Vite kullanımını ve globalSetup dosyalarını hata ayıklamak için faydalıdır. Vite eklentileriniz de burada yürütülür.

TIP

Vite'a özgü profillendirme hakkında daha fazla ipucu için Performans | Vite bölümüne bakın.

Vite eklenti performansınızı profillendirmek için vite-plugin-inspect kullanmanızı öneririz.

Bunu yapmak için Vitest'i çalıştıran Node işlemine argümanlar iletmeniz gerekir.

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

Testler çalıştıktan sonra main-profile/*.cpuprofile dosyası oluşturulmuş olmalıdır. Bu dosyaları nasıl analiz edeceğinize ilişkin talimatlar için Profillendirme kayıtlarını inceleme bölümüne bakın.

Dosya Dönüştürme ​

Test dönüştürme ve toplama süreniz yüksekse, DEBUG=vite-node:* ortam değişkenini kullanarak hangi dosyaların vite-node tarafından dönüştürüldüğünü ve yürütüldüğünü görebilirsiniz.

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
...

Bu profilleme stratejisi, barrel dosyalarının neden olduğu gereksiz dönüşümleri belirlemek için etkili bir yöntemdir. Bu günlükler, testiniz çalıştırıldığında yüklenmemesi gereken dosyaları içeriyorsa, barrel dosyalarınız gereksiz içe aktarmalar yapıyor olabilir.

Barrel dosyasının neden olduğu yavaşlık sorunlarını gidermek için Vitest UI kullanabilirsiniz. Aşağıdaki örnek, barrel dosyası olmadan dosyaları içe aktarmanın dönüştürülen dosya miktarını yaklaşık %85 oranında nasıl azalttığını gösteriyor.

├── src
│   └── utils
│       ├── currency.ts
│       ├── formatters.ts  <-- Test edilecek dosya
│       ├── 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, barrel dosyası sorunlarını gösteriyor

Dosyaların nasıl dönüştürüldüğünü görmek için, dönüştürülen dosyaları dosya sistemine yazmak üzere VITE_NODE_DEBUG_DUMP ortam değişkenini kullanabilirsiniz:

bash
$ VITE_NODE_DEBUG_DUMP=true vitest --run

[vite-node] [debug] modülleri /x/examples/profiling/.vite-node/dump konumuna yaz
 
 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

Profillendirme Kayıtlarını İnceleme ​

*.cpuprofile ve *.heapprofile dosyalarını çeşitli araçlarla inceleyebilirsiniz. Örnekler için aşağıdaki listeye bakın.

  • Speedscope
  • Visual Studio Code'da JavaScript'i Performans Profillendirme
  • Performans paneliyle Node.js performansını profillendirme | developer.chrome.com
  • Bellek paneline genel bakış | developer.chrome.com
Pager
Önceki sayfaYaygın Hatalar
Sonraki sayfaPerformansı İyileştirme

MIT Lisansı altında yayınlanmıştır.

Copyright (c) 2024 Mithril Contributors

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

MIT Lisansı altında yayınlanmıştır.

Copyright (c) 2024 Mithril Contributors