Original Post
The why is C++... overused? thread spawned what I thought was is a far more interesting topic, JITting. As Antheus stated, it is not doing anywhere near as much as the hype leads you to believe. I'm sure many of us understand the idea behind JITting, and how it works, but what I want to know is why is it having such a hard time living up to its hype? From what I see, as someone who hasn't dug down deep into the core of any JIT compiler, it has the ability to do a lot of the same tasks as a traditional compiler, but doesn't do so for the sake of time. This makes sense for quite variable code like scripts, but why force everything to behave that way? Lets take .NET for instance. We have the .NET 2.0 optimizer service, which will run the JIT on stuff that needs it using unused resources, so when you want to run it, it is ready for use. This is a great idea. But more importantly, it doesn't suffer from the time constraints of JITting right before the program executes. So why isn't this background JIT service take advantage of the fact that it has so much time? Why can't we tell the JITter, "Sure, take as much time as you need, and if I try to run it before you're done, warn me and let me choose to wait or run with a normal JIT?" Is there any technical reason this can't be done? Or is it just too much work to implement a second compiler? I'd love to have my computer working itself to death as I sleep just so it can present me a more optimized code - it's not like it is doing much else at the time. But am I, with my lack of knowledge with how JITters work, missing something important?