У меня есть следующая цитата из курса моего компилятора (в контексте раскраски графа):
Поскольку это медленно, раскраска графа имеет тенденцию использоваться в пакетных компиляторах, в то время как линейное сканирование имеет тенденцию использоваться в компиляторах JIT.
Я не мог найти четкое определение в Интернете. Итак, что делает компилятор пакетным компилятором?
Ответы:
Компилятор JIT (Just-In-Time) компилирует код во время выполнения, то есть во время работы программы. Поэтому стоимость компиляции является частью времени выполнения программы, и поэтому должна быть сведена к минимуму.
Противоположностью этому является опережающий (AOT) компилятор, который в основном синонимичен с "пакетным компилятором". Это преобразует исходный код в машинный код, а затем распространяется только машинный код. Следовательно, компилятор может быть очень медленным, поскольку он не влияет на время выполнения результирующей программы.
В наши дни, когда люди говорят «компилятор», они обычно имеют в виду компилятор AOT. Действительно, термин «компилятор AOT» стал действительно популярным сравнительно недавно, когда люди начали создавать компиляторы AOT для JIT-компилируемых языков, особенно JavaScript. Многие из этих языков, например C #, компилируются в промежуточный язык для виртуальной машины, который затем JIT компилируется в машинный код во время выполнения. Термин «AOT-компилятор» означает, что исходный код будет скомпилирован непосредственно в машинный код, поэтому во время выполнения не требуется никакой формы JIT-компиляции.
«Пакетный компилятор» - это немного архаичный термин. Реальным контрастом с пакетным компилятором, когда термин был популярен, был инкрементный компилятор . Инкрементная компиляция часто ассоциируется с такими языками, как Lisp, где у вас есть REPL, и вы можете в интерактивном режиме запросить реализацию языка для компиляции определенной функции. Если выполнялась функция, компиляция которой раньше не запрашивалась, она обычно интерпретируется. Пакетный компилятор, напротив, компилировал все функции одновременно, то есть в пакете.
источник
Смысл подразумевается в цитате, которую вы даете! Он вытекает из вычислительного термина пакетной обработки, который используется, когда задача не выполняется в режиме реального времени, но он запланирован для последующего выполнения операционной системой, когда нагрузка (часто для операций в реальном времени) меньше.
Пакетный компилятор - это тот, который выполняет компиляцию, когда пользователь не ожидает результата компиляции. Это тот, который мы бы сказали, используя более современную терминологию, сделанную на заднем плане.
Это противоположность JIT (Just-In-Time), который выполняется «вживую» в то время, когда это необходимо, без роскоши тратить дополнительное время на более тщательную обработку.
Более медленная скорость пакетной компиляции может быть проиллюстрирована этим:
Источник: https://xkcd.com/303/
Или даже это:
Источник: http://dilbert.com/strip/2013-06-22
источник