С добавлением полезной нагрузки в цикл и флага оптимизации
-O2 при компиляции на плюсах получились такие результаты
c++
#include <iostream>
#include <chrono>
int main(){
auto start_time = std::chrono::steady_clock::now();
long long c = 0;
for(long long i = 0; i < 1000000000; i++){
c+=c xor i;
}
auto end_time = std::chrono::steady_clock::now();
auto elapsed_ns = std::chrono::duration_cast<std::chrono::milliseconds>(end_time - start_time);
std::cout << elapsed_ns.count() << " ms\n";
std::cout << c << std::endl;
return 1;
}
go
package main
import (
"fmt"
"time"
)
func main(){
var f int64 = 0
var i int64 = 0
start := time.Now()
for i = 0; i < 1000000000; i++{
f+=f ^ i
}
duration := time.Since(start)
fmt.Println(duration)
fmt.Println(f)
}
Всё дело в оптимизации