JIT i tłumacz

Anonim

JIT kontra interpreter

Kompilacja Just In Time (znana również jako dynamiczne tłumaczenie lub JIT) jest techniką stosowaną w komputerach komputerowych do poprawy jakości działania programu komputerowego w czasie wykonywania. Jest to połączenie dwóch pomysłów znalezionych w środowiskach uruchomieniowych: kompilacja Bytecode i dynamiczna kompilacja (która jest procesem używanym przez niektóre implementacje języków programowania w celu uzyskania wydajności, gdy system wykonuje działanie).

Tłumacz najdokładniej opisuje wykonanie akcji za pomocą programu komputerowego. Istnieje kilka rodzajów działań wykonywanych przez interpreter: bezpośrednio wykonuje kod źródłowy programu; tłumaczy kod źródłowy na reprezentację, która jest wydajną reprezentacją pośrednią, a następnie wykonuje wspomniany kod; wykonuje skompilowany kod, który został zapisany i utworzony przez kompilator, który jest częścią systemu tłumacza.

JIT ma zdolność łączenia zalet zarówno w interpretacji, jak i statycznej (to znaczy z wyprzedzeniem) kompilacji. Jako tłumacz, JIT jest w stanie poprawić wydajność poprzez buforowanie wyników bloków kodu, które zostały przetłumaczone - w porównaniu z prostą ponowną oceną każdej linii lub operandu w kodzie za każdym razem, gdy on występuje (jak w języku interpretowanym). Podobnie jak statyczny kod kompilujący w momencie opracowywania, JIT może przekompilować kod, jeśli okaże się, że jest to najkorzystniejszy plan działania. Ponadto, w tym samym duchu, co kompilacja statyczna, JIT może wymuszać gwarancje bezpieczeństwa.

Podobnie jak kompilatory, tłumacze mają zdolność do tłumaczenia kodu. Obie są podstawowymi metodami implementacji języków programowania; jednak kategorie "kompilatora" lub "tłumacza" nie są odrębne (ze względu na ich podwójne role jako tłumacza kodu). Najbardziej oczywistą wadą korzystania z interpretera jest to, że po zinterpretowaniu kodu program będzie nieuchronnie działał wolniej niż po prostu podczas kompilowania kodu; jednak interpretacja kodu trwa znacznie krócej niż podczas kompilowania i uruchamiania (szczególnie w przypadku tworzenia prototypów i testowania kodu).

Ogólnie mówiąc, JIT zapewnia znacznie lepszą wydajność niż interpretery, aw wielu przypadkach zapewnia znacznie lepszą wydajność niż kompilatory statyczne. Jego przewaga nad JIT nie wyklucza jednak jego poważnych wad: podczas początkowego uruchamiania aplikacji występuje niewielkie opóźnienie (efekt uboczny czasu na załadowanie i skompilowanie kodu bajtowego). W końcu wygeneruje lepsze kodowanie; jednak początkowe opóźnienie wynikające z tego będzie wzrastać wraz z jakością kodowania.

Streszczenie:

1. JIT jest techniką używaną do poprawy jakości wykonania środowiska wykonawczego w środowisku wykonawczym; tłumacz definiuje wykonanie działania za pomocą programu komputerowego.

2. JIT łączy zalety interpretacji i kompilacji statycznej; tłumacz może przetłumaczyć kod tak jak kompilator, ale ze szkodą dla szybkości programu.