<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.sarg.dev/index.php?action=history&amp;feed=atom&amp;title=Dynamic_compilation</id>
	<title>Dynamic compilation - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.sarg.dev/index.php?action=history&amp;feed=atom&amp;title=Dynamic_compilation"/>
	<link rel="alternate" type="text/html" href="https://wiki.sarg.dev/index.php?title=Dynamic_compilation&amp;action=history"/>
	<updated>2026-04-21T15:55:48Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wiki.sarg.dev/index.php?title=Dynamic_compilation&amp;diff=396898&amp;oldid=prev</id>
		<title>imported&gt;KMaster888: subjective ce</title>
		<link rel="alternate" type="text/html" href="https://wiki.sarg.dev/index.php?title=Dynamic_compilation&amp;diff=396898&amp;oldid=prev"/>
		<updated>2024-12-16T22:40:22Z</updated>

		<summary type="html">&lt;p&gt;subjective ce&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Program execution}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Dynamic compilation&amp;#039;&amp;#039;&amp;#039; is a process used by some [[programming language]] implementations to gain performance during program execution. Although the technique originated in [[Smalltalk]],&amp;lt;ref&amp;gt;Peter L. Deutsch and Alan Schiffman. &amp;quot;Efficient Implementation of the Smalltalk-80 System&amp;quot;, 11th Annual Symposium on Principles of Programming Languages, Jan 1984, pp. 297-302&amp;lt;/ref&amp;gt; the best-known language that uses this technique is [[Java (programming language)|Java]]. Since the [[machine code]] emitted by a dynamic compiler is constructed and optimized at program runtime, the use of dynamic compilation enables optimizations for efficiency not available to statically-compiled programs (i.e. those compiled by a so-called &amp;quot;batch compiler&amp;quot;, as written below) except through [[Duplicate code|code duplication]] or [[metaprogramming]].&lt;br /&gt;
&lt;br /&gt;
[[Runtime environment]]s using dynamic compilation typically have programs run slowly for the first few minutes, and then after that, most of the compilation and recompilation is done and it runs quickly. Due to this initial performance lag, dynamic compilation is undesirable in certain cases. In most implementations of dynamic compilation, some optimizations that could be done at the initial [[compile time]] are delayed until further compilation at [[Run time (program lifecycle phase)|run-time]], causing further unnecessary slowdowns. [[Just-in-time compilation]] is a form of dynamic compilation.&lt;br /&gt;
&lt;br /&gt;
==Incremental compilation==&lt;br /&gt;
A closely related technique is &amp;#039;&amp;#039;&amp;#039;incremental compilation&amp;#039;&amp;#039;&amp;#039;. An [[incremental compiler]] is used in [[POP-2]], [[POP-11]], [[Forth (programming language)|Forth]], some versions of [[Lisp (programming language)|Lisp]], e.g. [[Maclisp]] and at least one version of [[ML (programming language)|ML]] ([[Poplog]] ML).&lt;br /&gt;
&lt;br /&gt;
This requires the [[compiler]] for the programming language to be part of the runtime system. In consequence, source code can be read in at any time, from the terminal, from a file, or possibly from a data-structure constructed by the running program, and translated into a machine code block or function (which may replace a previous function of the same name), which is then immediately available for use by the program. Because of the need for speed of compilation during interactive development and testing, the compiled code is likely not to be as heavily optimised as code produced by a standard &amp;#039;batch compiler&amp;#039;, which reads in source code and produces object files that can subsequently be linked and run. However an incrementally compiled program will typically run much faster than an [[interpreted language|interpreted]] version of the same program. Incremental compilation thus provides a mixture of the benefits of interpreted and compiled languages. To aid portability it is generally desirable for the incremental compiler to operate in two stages, namely first compiling to some intermediate platform-independent language, and then compiling from that to machine code for the host machine. In this case porting requires only changing the &amp;#039;back end&amp;#039; compiler. Unlike dynamic compilation, as defined above, incremental compilation does not involve further optimisations after the program is first run.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Transmeta]] processors dynamically compile [[x86]] code into [[VLIW]] code.&lt;br /&gt;
* [[Dynamic recompilation]]&lt;br /&gt;
* [[Just-in-time compilation]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
*[https://web.archive.org/web/20050527084957/http://www.cs.washington.edu/research/dyncomp/ The UW Dynamic Compilation Project]&lt;br /&gt;
*[http://www.research.ibm.com/daisy/ Architecture Emulation through Dynamic Compilation]&lt;br /&gt;
*[https://web.archive.org/web/20081222135456/http://software.sci.utah.edu/doc/Developer/Guide/dev.dynamiccomp.html SCIRun]&lt;br /&gt;
*Article &amp;quot;[https://web.archive.org/web/20081201155138/http://www.ddj.com/documents/ddj0410h/ Dynamic Compilation, Reflection, &amp;amp; Customizable Apps]&amp;quot; by [[David B. Scofield]] and [[Eric Bergman-Terrell]]&lt;br /&gt;
*Article &amp;quot;[http://weblogs.asp.net/cazzu/archive/2003/10/07/30888.aspx High-performance XML: Dynamic XPath expressions compilation]&amp;quot; by [[Daniel Cazzulino]]&lt;br /&gt;
*[[Matthew R. Arnold]], [[Stephen Fink]], [[David P. Grove]], [[Michael Hind]], and [[Peter F. Sweeney]], [http://www.research.ibm.com/people/h/hind/papers.html#survey05 A Survey of Adaptive Optimization in Virtual Machines], Proceedings of the IEEE, 92(2), February 2005, Pages 449-466.&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:Dynamic Compilation}}&lt;br /&gt;
[[Category:Compiler construction]]&lt;/div&gt;</summary>
		<author><name>imported&gt;KMaster888</name></author>
	</entry>
</feed>