Cross-Language Compiler Benchmarking
stefan-marr.de
Cross-Language Compiler Benchmarking
1–5 of 5 posts
Re: Cross-Language Compiler Benchmarking
#2Re: Cross-Language Compiler Benchmarking
#3It would be interesting to see the comparison with non-GC implementations of the same algorithms/benchmarks - for example in C...
But the bigger ones are not yet (so, no results yet).
One of the important questions to answer first is how the mapping should be done. A naive version using new/delete/smartpointers is going to have performance issues. Other options would be to use arena allocators and completely remove memory management overhead from the equation. Depending on what comparison/C++ usage scenario is desired, both options would be useful.
Re: Cross-Language Compiler Benchmarking
#4Some theories as to sources of the slowness:
- The Boehm GC is so much worse that it accounts for bad performance even on benchmarks that don't stress it.
- Crystal's polymorphic calls don't use inline caches and JIT speculation so they aren't as fast as Java's.
- LLVM isn't as good at bounds check elimination as Java because C++ doesn't need it.
- The Crystal code used reference types where it normally would use value types, and Java really has a better code generator for this sort of object-oriented code.
Re: Cross-Language Compiler Benchmarking
#5Interesting that Crystal did worse than Java even on many non-GC-stress-test benchmarks. I wasn't expecting that. Some theories as to sources of the slowness: - The Boehm GC is so much worse that it accounts for bad performance even on benchmarks that don't stress it. - Crystal's polymorphic calls don't use inline caches and JIT speculation so they aren't as fast as Java's. - LLVM isn't as good at bounds check elimin…
So HotSpot may detect "hot spot code" in runtime and aggressively inline it - this is what LLVM can not do, becuase it doesn't run in runtime...