edit lần chót: đổi kiểu của data
và val
thành long long
sẽ thấy 2 chú chạy nhanh như nhau
TOTAL 100 TIMES MODE 2: ------------------------------------------------
++I :1818525
I++ :1833648
TOTAL 100 TIMES MODE 1------------------------------------------------
I++ :1796192
++I :1794913
Kết luận là ông MSVC gặp vấn đề lớn khi convert reference của biến. Nếu chạy trên OS 32-bit chắc nó sẽ như nhau, chạy trên OS 64-bit thì reference của ++i là 8 byte nên gây ra chậm hơn int 4 byte???
thử trên MSYS2 g++ thì thấy tốc độ tương đương nhau, có ông MS là có vấn đề vì cái ++i trả về reference ổng ko handle nổi @_@
hoặc có thể trên OS 64-bit thì load lên thanh ghi bằng cách nào đó bị biến thành 64-bit integer hết? Thử với char, short, int đều thấy ++i chậm hơn, chỉ có long long là như nhau @_@