Operador de comparação < é mais rápido que <=? A escolha do operador afeta a performance em C++?
Olá a todos! Sou um desenvolvedor C++ iniciante e uma pergunta me incomoda há vários dias. Eu escrevo loops com condições e frequentemente me pergunto: existe diferença de performance entre `i < n` e `i <= n`? Por exemplo, no nível de assembly, essas operações podem ser executadas de forma diferente. Ouvi dizer que em processadores antigos, a comparação "menor que" podia ser mais rápida do que "menor ou igual", porque a segunda exige uma verificação adicional de igualdade. Mas agora, em 2024, isso ainda é relevante?
Aqui está um exemplo simples de código que me preocupa:
```cpp
int sum = 0;
for (int i = 0; i < 1000000; ++i) {
sum += i;
}
```
vs
```cpp
int sum = 0;
for (int i = 0; i <= 999999; ++i) {
sum += i;
}
```
Ambos os loops fazem a mesma coisa, mas o primeiro usa `<` e o segundo `<=`. O compilador otimiza isso? Ou preciso sempre preferir um operador ao outro? Estou especialmente interessado em como isso funciona em processadores modernos x86-64 e ARM. Talvez haja casos em que a diferença realmente...