Hello,
Just upgraded my chess engine to 0.16.0 and noticed that my move generation runs more than 10 times faster. This also impacts the whole code and I estimated a 150 elo point gain (yay
)
I read the changelog multiple times and cannot understand why this has changed.
I use a lot of enums with an inlined @intFromEnum() command so maybe this has to do with the rework of type resolution. Even though I imagine the changes would only interfere with compilation time.
My move generation is basically reading some arrays and computing magic numbers (bit shifts and multiplications).
There is also the edition of the current position which includes xoring and increments.
I use a lot of atypically-sized integers (The int from enum performance drama) which may lead to performance issues due to LLVM handling of it, but it doesn’t look like that changed with 0.16.0.
It’s not a big deal but I’d love to understand what changed.