Разница между компилятором и интерпретатором заключается в том, что:
Компилятор сканирует ваш исходный код только один раз и заменяет его на код выполнения (возможно, машинный код).Когда вы выполняете свою программу в следующий раз, вы напрямую выполняете исполняемый код без анализа исходного кода, что эффективно.
Однако интерпретатор анализирует исходный код каждый раз, когда вы выполняете свою программу.
Эта оптимизация имеет смысл только в том случае, если ваша программа будет выполнена более одного раза.
Как сказал @Eli Barzilay, «гораздо лучшее имя для analyze
- это compile
», ваши проанализированные функции похожи на код выполнения.Рекурсивные функции похожи на программы, которые выполняются более одного раза.