Mam następujący cytat z kursu mojego kompilatora (w kontekście kolorowania grafów):
Ponieważ jest wolny, kolorowanie wykresów jest zwykle stosowane w kompilatorach wsadowych, podczas gdy skanowanie liniowe jest zwykle stosowane w kompilatorach JIT.
Nie mogłem znaleźć jasnej definicji online. Co sprawia, że kompilator jest kompilatorem wsadowym?
Odpowiedzi:
Kompilator JIT (Just-In-Time) kompiluje kod w czasie wykonywania, tj. Podczas działania programu. Dlatego koszt kompilacji jest częścią czasu wykonania programu i dlatego należy ją zminimalizować.
Przeciwieństwem tego jest kompilator wyprzedzający (AOT), który jest w zasadzie synonimem „kompilatora wsadowego”. Konwertuje to kod źródłowy na kod maszynowy, a następnie dystrybuowany jest tylko kod maszynowy. Dlatego kompilator może działać bardzo wolno, ponieważ nie wpływa na czas wykonywania wynikowego programu.
W dzisiejszych czasach, gdy ludzie mówią „kompilator”, zwykle mają na myśli kompilator AOT. Rzeczywiście, pojęcie „kompilator AOT” zaczęło być popularne stosunkowo niedawno, gdy ludzie zaczęli tworzyć kompilatory AOT dla języków kompilowanych w JIT, zwłaszcza JavaScript. Wiele z tych języków, np. C #, kompiluje się do języka pośredniego dla maszyny wirtualnej, która jest następnie kompilowana w JIT do kodu maszynowego w czasie wykonywania. Termin „kompilator AOT” ma konotację, że kod źródłowy zostanie skompilowany bezpośrednio do kodu maszynowego, dlatego w czasie wykonywania nie jest wymagana żadna forma kompilacji JIT.
„Kompilator wsadowy” jest w tym momencie trochę archaicznym terminem. Prawdziwym przeciwieństwem kompilatora wsadowego, gdy termin był popularny, był kompilator przyrostowy . Kompilacja przyrostowa jest często kojarzona z językami takimi jak Lisp, w których posiadasz REPL i możesz interaktywnie poprosić o implementację języka, aby skompilował określoną funkcję. Jeśli funkcja została wykonana, której kompilacji nie zażądano wcześniej, zwykle byłaby interpretowana. Natomiast kompilator wsadowy skompilował wszystkie funkcje jednocześnie, tj. Wsadowo.
źródło
Znaczenie jest sugerowane w cytowanym przez Ciebie cytacie! Wynika to z przetwarzania wsadowego terminu obliczeniowego, które jest używane, gdy zadanie nie jest wykonywane w czasie rzeczywistym, ale zostało zaplanowane do późniejszego wykonania przez system operacyjny, gdy obciążenie (często dla działań w czasie rzeczywistym) jest mniejsze.
Kompilator wsadowy to taki, który wykonuje kompilację, gdy użytkownik nie czeka na wynik kompilacji. Można powiedzieć, że przy użyciu bardziej nowoczesnej terminologii wykonanej w tle.
Jest to odwrotność JIT (Just-In-Time), który jest wykonywany „na żywo” w dokładnie takiej chwili, w której jest potrzebny, bez luksusu spędzania dodatkowego czasu na dokładniejszym przetwarzaniu.
Niższą prędkość kompilacji wsadowej można zilustrować następująco:
Źródło: https://xkcd.com/303/
Lub nawet to:
Źródło: http://dilbert.com/strip/2013-06-22
źródło