<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Jul 10, 2017 at 1:31 PM, Benjamin Spratling <span dir="ltr">&lt;<a href="mailto:bspratling@mac.com" target="_blank">bspratling@mac.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto"><div>I&#39;m aware that Java re-compiles sections to make incremental performance improvements based on a statistical analysis of usage.  I&#39;m not familiar enough with other uses of JIT on the backend to know what advantages it would have, beyond less time from begin compile to launch.  Could you list a few benefits?</div></div></blockquote><div><br></div><div>The primary benefit is better performance by being able to exploit knowledge about the program&#39;s behaviour and the hardware and software environment it&#39;s running in that is only (or at least more easily and accurately) available at runtime. In the case we&#39;re interested in &quot;less time from begin compile to launch&quot; would not be a benefit, since we&#39;re interested in JIT compiling an already built program.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto"><div id="m_-2208273242231985949AppleMailSignature">One of the goals of the Swift team appears to have been to achieve predictable performance, to the tune of finding object deallocations as too unpredictable.  So would you envision this as being an opt-in per compile?<br></div></div></blockquote><div><br></div><div>Variations in behaviour and performance are, unfortunately, a common hazard with JIT compilation. It depends on the implementation of the JIT in question of course; if you put emphasis on predictability you can certainly engineer a JIT that favours predictability over peak performance. I personally think anyone embarking on this sort of thing would hopefully keep their users&#39; concerns in mind and try not to subvert the language&#39;s design goals and principles if it can be helped.</div><div><br></div><div>Opt-in/out is an interesting idea (that I&#39;ve personally considered more so for my own debugging purposes). An annotation that works like the familiar inline/alwaysinline/neverinline might be a useful with the hope being that a JIT would hopefully do &quot;the right thing&quot; and free you from having to care.</div></div></div></div>