But it is expensive, because it does run-time checks? Or they are optimized out?
Because the counter is non-atomic and non-volatile the optimiser can sometimes optimise out the actual modification of the counter. It's not free, but it's not also not a huge expense.