|
|
|
|
|
by alkonaut
2618 days ago
|
|
There are multiple ”levels” of performance in play here, and which level a language performs on depends on the language, runtime and implementation. The most naive level is e.g allocating heap objects for vectors, rays etc. On that level the algorithm is probably bounded by pointed chasing, cache misses and GC. The next level up is an allocation-free loop (at least) The best level is an optimized and allocation free. If the implementation isn’t allowed to optimize (use SoA instead of AoS, manually vectorize, unroll etc) then the winning languages will be the ones that have sophisticated compilers such as those with LLVM backends. As an example: The C# example should be on the second level here - but it has a poor implementation (looks like it’s ported from java or written by a java developer) so it’s actually stuck on the first naive level. |
|