Pracuję nad własnym językiem programowania zabawek. Na razie interpretuję język źródłowy z AST i zastanawiam się, jakie korzyści może dać mi kompilacja kodu bajtowego, a następnie jego interpretacja.Jakie są motywy kompilacji kodu bajtowego?
Na razie mam trzy rzeczy na uwadze:
- przemierzając setki drzew składnia czasu może być wolniejsze niż bieganie z instrukcjami w tablicy, zwłaszcza jeśli wsparcie tablicy O (1) dostępu losowego (np. przeskakiwanie 10 instrukcji w górę i w dół).
- W typowym środowisku wykonawczym, mam pewne koszty w czasie wykonywania, ponieważ mój AST jest wpisany i ciągle go przechodzę (tj. Mam 10 typów węzłów i muszę sprawdzić, jaki typ mam teraz wykonać). Być może kompilacja do kodu bajtowego bez typu może pomóc w ulepszeniu tego, ponieważ po sprawdzeniu typu i kompilacji, będę miał niepoprawne wartości i kod.
- Kompilacja do kodu bajtowego może zapewnić lepszą przenośność.
Czy moje punkty są prawidłowe? Jakie są inne motywy kompilacji kodu bajtowego?
Uruchamiając interpreter zwiększa przenośność kodu – Luis
@Luis, tak, to już było w mojej głowie, zapomniałem dodać .. – sinan
@Luis: To nieprawda. Serializowane AST mogą być równie przenośne. Bajtod może w rzeczywistości nie być przenośny; Kod bajtowy Pythona jest specyficzny dla każdej wersji interpretera. –