Naive node.js faster than naive LDC2?
H. S. Teoh
hsteoh at quickfur.ath.cx
Sat Aug 22 16:15:14 UTC 2020
On Sat, Aug 22, 2020 at 02:08:40AM +0000, bachmeier via Digitalmars-d wrote:
> I have no desire to dig into it myself, but I'll just note that if you
> check the CLBG, you'll see that it's not hard to write C and C++
> programs for this benchmark that are many times slower than Node JS.
> The worst of them takes seven times longer to run.
As described in my other post, my analysis of James' code reveals the
1) Using class instead of struct;
2) Using real instead of double;
3) std.math.fmax calling the C library (involving a PIC indirection to a
shared library as opposed to inlineable native D code).
Addressing all 3 issues yielded a 67% improvement (from class + real + C
fmax -> struct + double + native fmax), or 37% improvement (from class +
double + C fmax -> struct + double + native fmax).
I don't have a Node.js environment, though, so I can't make a direct
comparison with the optimized D version.
I will note, though, that (1) and (2) are well-known performance issues;
I'm surprised that this was not taken into account in the original
comparison. (3) is something worth considering for std.math -- yes it's
troublesome to have to maintain D versions of these functions, but they
*could* make a potentially big performance impact by being inlineable in
hot inner loops.
Computers shouldn't beep through the keyhole.
More information about the Digitalmars-d