Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

For a post accusing another of FUD, it would help if you got more of your own details right: C# doesn't have an AOT or JIT compiler - all compilers that I'm aware of always compile it to IL. You're right that the .NET JIT has historically focused on startup speed rather than pure speed, but there are many factors that affect performance (e.g. C#'s defaulting methods to non-virtul may mitigate the lack of hotspot-like optimization; value types and the resulting lack of boxing/unboxing may likewise have a positive impact; ditto for reified generics). What in particular strikes you as "horrible" about Microsoft's implementation?


We did quite a lot of benchmarks about various programs (like Python interpreter written in RPython compiled to C#) and the performance was pretty bad. There were various issues, some avoidable some unavoidable, like Exceptions being very very slow (and being essentially for free on Java). I don't think it's possible to summarize it without writing a small novel and I don't care enough, but the JIT is as far as I know a direct IL-to-ASM compiler with very little optimizations or not at all. This puts a serious ceiling on what can be fast and what cannot be fast. In particular the escape analysis is either non-existant or very weak.

The AOT part is exactly C# -> IL and then it's later compiled to assembler.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: