Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Just-in-time compilation
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{short description|Dynamically compiling bytecode to machine code during runtime}} {{Program execution}} In [[computing]], '''just-in-time''' ('''JIT''') '''compilation''' (also '''dynamic translation''' or '''run-time compilations''')<ref name="Michigan" /> is [[compiler|compilation]] (of [[Source code|computer code]]) during execution of a program (at [[run time (program lifecycle phase)|run time]]) rather than before execution.{{sfn|Aycock|2003}} This may consist of [[source code translation]] but is more commonly [[bytecode]] translation to [[machine code]], which is then executed directly. A system implementing a JIT compiler typically continuously analyses the code being executed and identifies parts of the code where the speedup gained from compilation or recompilation would outweigh the overhead of compiling that code. JIT compilation is a combination of the two traditional approaches to translation to machine code—[[Ahead-of-time compilation|ahead-of-time compilation (AOT)]], and [[Interpreter (computing)|interpretation]]—and combines some advantages and drawbacks of both.{{sfn|Aycock|2003}} Roughly, JIT compilation combines the speed of compiled code with the flexibility of interpretation, with the overhead of an interpreter and the additional overhead of compiling and [[Linker (computing)|linking]] (not just interpreting). JIT compilation is a form of [[dynamic compilation]], and allows [[adaptive optimization]] such as [[dynamic recompilation]] and [[microarchitecture]]-specific speedups.{{refn|group=nb|Ahead-of-Time compilers can target specific microarchitectures as well, but the difference between AOT and JIT in that matter is one of portability. A JIT can render code tailored to the currently running CPU at runtime, whereas an AOT, in lieu of optimizing for a generalized subset of uarches, must know the target CPU in advance: such code may not only be not performant on other CPU types but may be outright unstable.}}<ref name="Notario" /> Interpretation and JIT compilation are particularly suited for [[dynamic programming language]]s, as the runtime system can handle [[Late binding|late-bound]] data types and enforce security guarantees.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)