คอมไพเลอร์คอมไพล์รหัส JIT (Just-In-Time) ณ รันไทม์เช่นขณะที่โปรแกรมกำลังทำงาน ดังนั้นค่าใช้จ่ายในการรวบรวมจึงเป็นส่วนหนึ่งของเวลาดำเนินการของโปรแกรมดังนั้นควรลดให้เหลือน้อยที่สุด
สิ่งที่ตรงกันข้ามนี้คือคอมไพเลอร์ล่วงหน้า (AOT) ซึ่งโดยพื้นฐานแล้วมีความหมายเหมือนกันกับ "batch compiler" สิ่งนี้จะแปลงซอร์สโค้ดเป็นรหัสเครื่องและจากนั้นเพียงแจกจ่ายรหัสเครื่อง ดังนั้นคอมไพเลอร์อาจช้ามากเนื่องจากไม่ส่งผลกระทบต่อเวลาดำเนินการของโปรแกรมผลลัพธ์
ทุกวันนี้เมื่อผู้คนพูดว่า "คอมไพเลอร์" พวกเขามักจะหมายถึงคอมไพเลอร์ AOT แท้จริงแล้วคำว่า "AOT compiler" เพิ่งเริ่มได้รับความนิยมค่อนข้างมากเมื่อผู้คนเริ่มสร้างคอมไพเลอร์ AOT สำหรับภาษาที่รวบรวม JIT โดยเฉพาะ JavaScript ภาษาเหล่านี้จำนวนมากเช่น C # รวบรวมเป็นภาษาระดับกลางสำหรับ VM ซึ่งจากนั้น JIT จะคอมไพล์ไปยังรหัสเครื่องในเวลาทำงาน คำว่า "AOT คอมไพเลอร์" มีความหมายว่าซอร์สโค้ดจะถูกรวบรวมโดยตรงกับรหัสเครื่องดังนั้นจึงไม่จำเป็นต้องรวบรวมรูปแบบ JIT ในเวลาทำงาน
"คอมไพเลอร์แบทช์" เป็นคำศัพท์โบราณที่จุดนี้ ความแตกต่างที่แท้จริงในการคอมไพเลอร์แบทช์เมื่อคำที่ได้รับความนิยมเป็นคอมไพเลอร์ที่เพิ่มขึ้น การรวบรวมที่เพิ่มขึ้นมักจะเกี่ยวข้องกับภาษาเช่น Lisp ที่คุณมี REPL และคุณสามารถร้องขอการใช้ภาษาเพื่อรวบรวมฟังก์ชั่นเฉพาะ หากฟังก์ชั่นถูกดำเนินการที่ไม่ได้รับการรวบรวมมาก่อนก็มักจะถูกตีความ คอมไพเลอร์แบทช์ในทางตรงกันข้ามรวบรวมฟังก์ชั่นทั้งหมดในครั้งเดียวคือในชุด