Dark mode
การทำงานแบบขนาน (Parallelism)
โดยค่าเริ่มต้น Vitest จะรันไฟล์ทดสอบแบบขนาน ขึ้นอยู่กับ pool ที่กำหนด Vitest จะใช้กลไกที่แตกต่างกันในการทำงานแบบขนาน:
forks
(ค่าเริ่มต้น) และvmForks
รันการทดสอบในโปรเซสลูกที่แตกต่างกันthreads
และvmThreads
รันการทดสอบในเธรดเวิร์กเกอร์ที่แตกต่างกัน
ทั้ง "โปรเซสลูก" และ "เธรดเวิร์กเกอร์" ถูกเรียกว่า "workers" คุณสามารถกำหนดค่าจำนวนเวิร์กเกอร์ที่ทำงานด้วยตัวเลือก minWorkers
และ maxWorkers
หรือกำหนดค่าอย่างละเอียดด้วยการตั้งค่า poolOptions
หากคุณมีการทดสอบจำนวนมาก การรันแบบขนานมักจะเร็วกว่า แต่ก็ขึ้นอยู่กับโปรเจกต์ สภาพแวดล้อม และสถานะการแยก (isolation) ด้วย หากต้องการปิดการทำงานแบบขนานของไฟล์ คุณสามารถตั้งค่า fileParallelism
เป็น false
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการปรับปรุงประสิทธิภาพ โปรดอ่าน คู่มือประสิทธิภาพ
การทำงานแบบขนานของการทดสอบ
ต่างจากไฟล์ทดสอบ Vitest จะรันการทดสอบตามลำดับ ซึ่งหมายความว่าการทดสอบภายในไฟล์ทดสอบเดียวกันจะทำงานตามลำดับที่กำหนดไว้
Vitest รองรับตัวเลือก concurrent
เพื่อรันการทดสอบพร้อมกัน หากตั้งค่านี้ Vitest จะจัดกลุ่มการทดสอบแบบขนานในไฟล์เดียวกัน (จำนวนการทดสอบที่ทำงานพร้อมกันขึ้นอยู่กับตัวเลือก maxConcurrency
) และรันพวกมันด้วย Promise.all
Vitest ไม่ได้ทำการวิเคราะห์อัจฉริยะและไม่ได้สร้างเวิร์กเกอร์เพิ่มเติมเพื่อรันการทดสอบเหล่านี้ ซึ่งหมายความว่าประสิทธิภาพของการทดสอบจะดีขึ้นเฉพาะเมื่อคุณพึ่งพาการทำงานแบบอะซิงโครนัสเป็นหลัก ตัวอย่างเช่น การทดสอบเหล่านี้จะยังคงทำงานทีละอันแม้ว่าจะระบุตัวเลือก concurrent
ก็ตาม เนื่องจากพวกมันเป็นแบบซิงโครนัส:
ts
test.concurrent("การทดสอบแรก", () => {
expect(1).toBe(1);
});
test.concurrent("การทดสอบที่สอง", () => {
expect(2).toBe(2);
});
หากคุณต้องการรันการทดสอบทั้งหมดแบบขนาน คุณสามารถตั้งค่า sequence.concurrent
เป็น true