FYI. I finished running timing comparisons with D. They are very consistent, with D a tad slower at a constant ratio. Since most of the work is done in the threading operations I suspect that's where the difference is. I used the latest LDC 1.16.0 D compiler (it uses LLVM), and Nim was compiled using GCC 8.3.1.
D source: [https://gist.github.com/jzakiya/ae93bfa03dbc8b25ccc7f97ff8ad0f61](https://gist.github.com/jzakiya/ae93bfa03dbc8b25ccc7f97ff8ad0f61) N | Nim | D | Ratio | -------------------|-----------------|---------------|-------| 100_000_000_000 | 4.628 | 4.619 | 1.00 | 500_000_000_000 | 23.308 | 24.071 | 1.03 | 1_000_000_000_000 | 47.966 | 49.703 | 1.04 | 5_000_000_000_000 | 265.746 | 276.847 | 1.04 | 10_000_000_000_000 | 572.803 | 590.881 | 1.03 | 50_000_000_000_000 | 3009.485 | 3046.913 | 1.01 | 100_000_000_000_000 | 6307.521 | 6594.283 | 1.04 | 200_000_000_000_000 | 13603.531 | 14706.743 | 1.08 | Run I have a Rust version of the previous (older) algorithm I will convert (at some time), and may finally try to do a C++, since people want to see a C++ version. Actually, this algorithm is a very good general benchmark because it exercises multiple components of a language (threading, memory allocation/management, compile time features, looping structures, standard libs, etc).
