Saya memiliki kutipan berikut dari kursus kompiler saya (dalam konteks pewarnaan grafik):
Karena lambat, pewarnaan grafik cenderung digunakan dalam kompiler batch, sedangkan pemindaian linier cenderung digunakan dalam kompiler JIT.
Saya tidak dapat menemukan definisi online yang jelas. Jadi, apa yang membuat kompiler menjadi kompiler batch?
Jawaban:
Kompiler JIT (Just-In-Time) mengkompilasi kode pada saat run-time, yaitu ketika program sedang berjalan. Oleh karena itu biaya kompilasi adalah bagian dari waktu pelaksanaan program, dan karenanya harus diminimalkan.
Kebalikan dari ini adalah kompiler di masa depan (AOT) yang pada dasarnya identik dengan "kompiler batch". Ini mengubah kode sumber menjadi kode mesin dan kemudian hanya kode mesin didistribusikan. Oleh karena itu, kompiler dapat menjadi sangat lambat karena tidak memengaruhi waktu eksekusi program yang dihasilkan.
Saat ini, ketika orang mengatakan "kompiler" mereka biasanya berarti kompiler AOT. Memang, istilah "kompiler AOT" hanya benar-benar mulai menjadi populer relatif baru-baru ini ketika orang mulai membuat kompiler AOT untuk bahasa yang dikompilasi JIT, khususnya JavaScript. Banyak dari bahasa ini, misalnya C #, kompilasi ke bahasa perantara untuk VM yang kemudian dikompilasi dengan JIT ke kode mesin saat run-time. Istilah "kompiler AOT" memiliki konotasi bahwa kode sumber akan dikompilasi langsung ke kode mesin, jadi tidak ada bentuk kompilasi JIT yang diperlukan saat run-time.
"Batch compiler" adalah sedikit istilah kuno pada saat ini. Kontras nyata dengan kompiler batch ketika istilah itu populer adalah kompilator tambahan . Kompilasi tambahan sering dikaitkan dengan bahasa seperti Lisp di mana Anda memiliki REPL dan Anda bisa secara interaktif meminta implementasi bahasa untuk mengkompilasi fungsi tertentu. Jika suatu fungsi dieksekusi yang kompilasinya tidak diminta sebelumnya, biasanya akan ditafsirkan. Sebuah kompiler batch, sebaliknya, mengkompilasi semua fungsi sekaligus, yaitu dalam sebuah batch.
sumber
Artinya tersirat dalam kutipan yang Anda berikan! Itu berasal dari pemrosesan batch istilah komputasi yang digunakan ketika tugas tidak dilakukan secara real-time, tetapi dijadwalkan untuk dieksekusi kemudian oleh sistem operasi ketika beban (sering untuk kegiatan real-time) kurang.
Kumpulan kompiler adalah kompilasi yang melakukan kompilasi ketika pengguna tidak menunggu hasil kompilasi. Ini adalah salah satu yang akan kita katakan, menggunakan terminologi yang lebih modern, dilakukan di latar belakang.
Ini adalah kebalikan dari JIT (Just-In-Time) yang dilakukan "langsung" pada waktu yang tepat tanpa kemewahan menghabiskan waktu ekstra untuk melakukan pemrosesan lebih teliti.
Kecepatan kompilasi batch yang lebih lambat dapat diilustrasikan dengan ini:
Sumber: https://xkcd.com/303/
Atau bahkan ini:
Sumber: http://dilbert.com/strip/2013-06-22
sumber