Trình biên dịch 03/09/2026 8 phút

Tràn thanh ghi làm chậm 12 lần — tôi suýt tin, rồi nhận ra mình đổi hai biến cùng lúc

Khi số giá trị sống cùng lúc vượt số thanh ghi, trình dịch phải đổ bớt ra stack (spill). Nhưng áp lực đến từ giá trị sống đồng thời, không phải số biến khai báo — 40 biến dùng tuần tự vẫn 0 tràn. Và chi phí tràn thật, khi cô lập đúng, chỉ ~3%. Đo thật trong container.

Trình biên dịch 03/09/2026 8 phút

clang thắng ba vòng lặp, tôi định khoe — rồi đọc assembly thấy mình sai cả lý do

Đo sáu vòng lặp bằng gcc và clang: clang nhanh hơn 2-4 lần ở vài vòng, hòa ở số khác. Tôi định kết 'clang nhanh hơn' và giải thích nó thắng popcount nhờ lệnh cnt. Đọc mã máy ra ngược hẳn — gcc mới dùng cnt mà vẫn chậm. Bài cuối sê-ri, và cái bẫy tôi rơi vào cả hai chân.