2 ms·
Perf impact due to bounds checks can be experienced in statically compiled languages as well (like Go/Rust). Although branch predictor improvements likely narro
by iscoelho 3y ago
Perf impact due to bounds checks can be experienced in statically compiled languages as well (like Go/Rust). Although branch predictor improvements likely narrow the gap, they do not eliminate it.
Code cache is not completely relevant afaik - you can easily replicate in micro-benchmarks.
- kaba0 3y ago> statically compiled languages I don’t think it’s relevant here, the JIT compiler can do the same optimizations here. If the branch predictor can basically 100% guess correctly (which will be the case in any correct program), it should not have any additional cost, besides taking up place in i$, so I would assume that that is responsible for the difference.
- iscoelho 3y ago> I don’t think it’s relevant here, the JIT compiler can do the same optimizations here. Correct. I was clarifying that the issue can be replicated in a "simpler" statically compiled benchmark. > If the branch predictor can basically 100% guess correctly (which will be the case in any correct program), it should not have any additional cost That isn't true. The CPU branch predictor has a cost no-matter what. Of course, it's a complicated story: https://blog.cloudflare.com/branch-predictor https://blog.cloudflare.com/branch-predictor
- kaba0 3y agoThanks! I definitely have to do some readup on that!