[Şimdi temelde eski olan oldukça farklı bir cevap için düzenleme geçmişine bakın.]
Evet, C ve / veya C ++ için birkaç JIT derleyicisi var.
CLing (oyundan tahmin edebileceğiniz gibi) Clang / LLVM'ye dayanmaktadır. Tercüman gibi davranır. Yani, bir miktar kaynak kodu verin, çalışması için bir komut verin ve çalışır. Buradaki vurgu, maksimum optimizasyon değil, temel olarak kolaylık ve hızlı derleme üzerinedir. Bu nedenle, teknik olarak sorunun kendisine bir cevap olmasına rağmen, bu OP'nin amacına pek uygun değil.
Başka bir olasılık da NativeJIT . Bu, soruyu biraz farklı şekilde ele alır. Özellikle, C veya C ++ kaynak kodunu kabul etmez, derler ve çalıştırır. Aksine, C ++ programınıza derleyebileceğiniz küçük bir derleyicidir. Temelde C ++ programınız içinde bir EDSL olarak ifade edilen bir ifadeyi kabul eder ve bundan sonra gerçekleştirebileceğiniz gerçek makine kodunu üretir. Bu, programınızın çoğunu normal bir derleyici ile derleyebileceğiniz bir çerçeveye çok daha uygun olur, ancak çalışma zamanına kadar bilemeyeceğiniz, optimum yürütme hızına yaklaşan bir şeyle yürütmek istediğiniz bazı ifadeleriniz vardır.
Asıl soruya belirgin niyet gelince, benim orijinal cevap temel nokta hala duruyor düşünüyorum: Bir JIT derleyicisi ise edebilir sonraki bir yürütme değişir veri olarak böyle şeylere adapte, hatta tek yürütme sırasında dinamik olarak değişen, Gerçek şu ki, bu en azından genel bir kural olarak nispeten az bir fark yaratıyor. Çoğu durumda, bir derleyiciyi çalışma zamanında çalıştırmak, bir miktar optimizasyondan vazgeçmeniz gerektiği anlamına gelir; bu nedenle, genellikle umduğunuz en iyi şey, bunun geleneksel bir derleyicinin üretebileceği kadar hızlı olması gerektiğidir.
Bir JIT derleyicisine sunulan bilgilerin , geleneksel bir derleyiciden önemli ölçüde daha iyi kod üretmesine izin verebileceği durumları ortaya koymak mümkün olsa da, uygulamada bu olayın örnekleri oldukça sıra dışı görünüyor (ve çoğu durumda doğrulayabildiğim gibi) bunun gerçekleşmesi, kaynak kodundaki statik derleme modelinde olmayan bir problemden kaynaklanıyordu).