On 4/1/2014 12:23 PM, John Colvin wrote:
It's not really possible to tell anything from that benchmark, especially with
fancy modern optimisers and branch predictors.
I disagree, read on.
1) ldc and gdc both optimise away some/all of the tests respectively.
> 2) once isIdentifierCharX is inlined, the compiler can determine what the
> results will be before-hand.
This is always an issue with benchmarking in order to find the best way to write
an algorithm. I just adjust it so the particular compiler used can't throw it away.
3) Even without 1) and 2), the results are unrealistically (very!) correlated,
leading to a branch-prediction bonanza. I'm sure you know how significant that
can be on modern CPUs. It is also very friendly to pre-fetching of the lookup
table*
This is exactly why I wanted to test it.
Perhaps have the same benchmark, but working on realistic data from a file.
Switching to it in Warp produced a very significant speedup on real files.
https://github.com/facebook/warp/pull/5