Thibault-Monnier wrote:

I am not sure this is entirely true. While it _is_ certainly influenced my 
micro architectural details, it is by no means a "small" change. In pure -E 
compilation, I achieved near 2% performance improvement, which means it was 
probably even more when considering only the lexing part.

Furthermore, it _does_ depend on the processor, but the idea behind this change 
is that, for most codebases, the `isHorizontalWhitespace` call is _never_ true, 
which means it can basically be skipped by the branch predictor (which I assume 
will be the case on most modern processors), so we are simply exchanging a 
table lookup with a `*CurPtr == 32`. This can be proven by the `branch-misses` 
metrics. It is too noisy to be meaningful on the LLVM Compile Time Tracker, but 
using `perf stat` locally I find that it goes down. This means that:
- Branch misses goes down.
- Branching cost probably goes down as well.

Therefore, I would be surprised if this causes a regression on _any_ serious 
processor. 

https://github.com/llvm/llvm-project/pull/180819
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to