Почему простой цикл на c++ выполняется медленнее, чем на golang?
Да хотя бы потому что оптимизатор может выбросить цикл, посчитав его ненужным. Есть оптимизации, которые умеют цикл заменять прогрессией, а здесь цикл можно вовсе удалить, тк он не влияет ни на что
С добавлением полезной нагрузки в цикл и флага оптимизации -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)
}



Всё дело в оптимизации