Ich habe das folgende Zitat aus dem Kurs meines Compilers (im Zusammenhang mit der Grafikfärbung):
Da es langsam ist, wird die Grafikfarbe in Batch-Compilern verwendet, während der lineare Scan in JIT-Compilern verwendet wird.
Ich konnte online keine klare Definition finden. Was macht einen Compiler zu einem Batch-Compiler?
Antworten:
Ein JIT-Compiler (Just-In-Time) kompiliert den Code zur Laufzeit, dh während das Programm ausgeführt wird. Daher sind die Kosten für die Kompilierung Teil der Ausführungszeit des Programms und sollten daher minimiert werden.
Das Gegenteil davon ist ein AOT-Compiler, der im Grunde genommen ein Synonym für "Batch-Compiler" ist. Dadurch wird der Quellcode in Maschinencode konvertiert und nur der Maschinencode verteilt. Daher kann der Compiler sehr langsam sein, da er die Ausführungszeit des resultierenden Programms nicht beeinflusst.
Wenn Leute heutzutage "Compiler" sagen, meinen sie typischerweise einen AOT-Compiler. Tatsächlich wurde der Begriff "AOT-Compiler" erst relativ spät populär, als Leute anfingen, AOT-Compiler für JIT-kompilierte Sprachen, insbesondere JavaScript, zu entwickeln. Viele dieser Sprachen, z. B. C #, werden zu einer Zwischensprache für eine VM kompiliert, die dann zur Laufzeit mit JIT zu Maschinencode kompiliert wird. Der Begriff "AOT-Compiler" hat die Konnotation, dass der Quellcode direkt in Maschinencode kompiliert wird, sodass zur Laufzeit keine Form der JIT-Kompilierung erforderlich ist.
"Batch Compiler" ist an dieser Stelle ein archaischer Begriff. Der wirkliche Gegensatz zu einem Stapelcompiler, als der Begriff populär war, war ein inkrementeller Compiler . Inkrementelle Kompilierung wird häufig mit Sprachen wie Lisp in Verbindung gebracht, in denen Sie eine REPL hatten, und Sie können die Sprachimplementierung interaktiv anfordern, um eine bestimmte Funktion zu kompilieren. Wenn eine Funktion ausgeführt wurde, deren Kompilierung noch nicht angefordert wurde, wird sie normalerweise interpretiert. Ein Batch-Compiler hat dagegen alle Funktionen auf einmal übersetzt, also in einem Batch.
quelle
Die Bedeutung ist in dem von Ihnen gegebenen Zitat enthalten! Dies ergibt sich aus dem Rechenbegriff Stapelverarbeitung, der verwendet wird, wenn die Aufgabe nicht in Echtzeit ausgeführt wird, sondern für eine spätere Ausführung durch das Betriebssystem geplant ist, wenn die Last (häufig für Echtzeitaktivitäten) geringer ist.
Ein Stapelcompiler führt die Kompilierung durch, wenn ein Benutzer nicht auf das Ergebnis der Kompilierung wartet. Wir würden sagen, dass dies mit moderneren Begriffen im Hintergrund geschieht.
Dies ist die Umkehrung einer JIT (Just-In-Time), die "live" zum richtigen Zeitpunkt ausgeführt wird, ohne den Luxus zu haben, zusätzliche Zeit für eine gründlichere Verarbeitung aufzuwenden.
Die langsamere Geschwindigkeit der Stapelkompilierung lässt sich folgendermaßen veranschaulichen:
Quelle: https://xkcd.com/303/
Oder auch das:
Quelle: http://dilbert.com/strip/2013-06-22
quelle