weltyc / ntest

NTest othello program
27 stars 12 forks source link

Integrating Jmobs2 #17

Closed vladpetric closed 10 years ago

vladpetric commented 10 years ago

There's a lot of changes in here. A lot of them are just minor C++ portability fixes actually (including, for instance, mingw building).

The main change I'd say revolves around EvalMobs/ValueJMobs. I've managed to beat a lot of performance out of it (or should I say in it). Sadly, for reasons mostly unknown, clang/llvm still does a really crappy job with that function. As I mentioned earlier, I filed a bug report to clang/llvm.

http://llvm.org/bugs/show_bug.cgi?id=20014

Other stuff:

The preferred compiler for Windows is Intel C++ Compiler. Resulting binary is about 10% faster. It still doesn't run as fast as on linux and I don't quite know why, but still it's a good improvement. Most of it comes from ValueJMobs.

The preferred compiler for Linux is gcc.

If clang gets improved, another 10% performance is probably on the table for a Mac build.

I added a prefetch for the Hash table of positions. It seems to be working. Perf improvement is probably just 1% (hard to determine precisely, could be anywhere from 0.5% to 2% honestly), but the number of misses clearly went down (I measured it via the perf tools and Intel's Vtune as well).

To extras/ I added a disassembly parser that produces "quality of compilation" stats. I've used it for the bug I filed.

I deleted magics.cpp because nothing was using it anymore.

I fixed many warnings from most of the compilers.

Finally, if I didn't implement a suggestion you made earlier, I'd like to apologize right now and ask you to tell me again.

vladpetric commented 10 years ago

I've added the fix for assertEquals. I figured that 0.001 should be more tolerant of floating point "stuff".