Tôi đã từng viết rất nhiều trình biên dịch lại trong ngày. Không chỉ các trình biên dịch đã trở nên tốt hơn, mà hầu hết các phần cứng hiện nay đều có rất nhiều logic dành cho việc thực thi mã không theo thứ tự. Vấn đề vi mô thực sự là lên lịch, hầu hết các hướng dẫn máy tính đều mất vài đồng hồ máy để tạo ra kết quả - và tải bộ nhớ bị mất bộ nhớ cache có thể mất vài trăm! Vì vậy, ý tưởng là lên lịch các hướng dẫn khác để làm một cái gì đó hữu ích, thay vì chờ đợi một kết quả. Và máy móc hiện đại có thể đưa ra một số hướng dẫn cho mỗi khoảng thời gian. Khi chúng tôi bắt đầu thực hiện CTNH không theo thứ tự, tôi thấy rằng cố gắng để có được hiệu suất tuyệt vời với mã hóa tay đã trở thành một trò chơi cốc. Đầu tiên, CTNH không theo thứ tự sẽ không thực hiện các hướng dẫn theo thứ tự được làm cẩn thận của bạn, kiến trúc CTNH mới lạ mắt đã giảm hình phạt lập lịch phần mềm không tối ưu đủ để trình biên dịch thường nằm trong một vài phần trăm hiệu suất của bạn. Ngoài ra, tôi phát hiện ra rằng các trình biên dịch hiện đang thực hiện các thủ thuật tạo phổ biến nhưng phức tạp, chẳng hạn như không kiểm soát, tải dưới cùng, đường ống phần mềm, v.v ... Điểm mấu chốt, bạn phải làm việc thực sự khó khăn, bỏ qua một số thủ thuật này và trình biên dịch đánh bại bạn. Sử dụng tất cả chúng và số lượng hướng dẫn trình biên dịch bạn cần tăng gấp nhiều lần!
Có lẽ thậm chí quan trọng hơn, hầu hết các vấn đề về hiệu năng, không phải là về tỷ lệ vấn đề hướng dẫn, mà là đưa dữ liệu vào CPU. Như tôi đã đề cập ở trên, độ trễ bộ nhớ hiện có hàng trăm chu kỳ và CPU có thể thực thi một số lệnh trong mỗi chu kỳ đồng hồ, vì vậy trừ khi chương trình - và đặc biệt là các cấu trúc dữ liệu được thiết kế sao cho tốc độ nhấn bộ đệm quá cao, microtuning theo hướng dẫn cấp độ sẽ không có kết quả. Cũng giống như các loại quân đội nói chiến thuật nói chuyện nghiệp dư, nói chuyện hậu cần. Lập trình hiệu suất hiện là hơn 90% hậu cần (di chuyển dữ liệu). Và điều này rất khó để định lượng, vì quản lý bộ nhớ hiện đại thường có nhiều cấp độ bộ đệm và các trang bộ nhớ ảo được xử lý bởi một đơn vị phần cứng có tên là TLB. Ngoài ra, việc căn chỉnh địa chỉ lowlevel trở nên quan trọng, vì việc truyền dữ liệu thực tế, không tính theo đơn vị byte, hoặc thậm chí dài 64 bit, nhưng chúng có các đơn vị dòng bộ đệm. Sau đó, hầu hết các máy hiện đại đều có phần cứng cố gắng dự đoán dòng bộ nhớ cache nào bạn có thể cần trong tương lai gần và đưa ra các tìm nạp trước tự động để đưa chúng vào bộ đệm. Vì vậy, thực tế là với các mô hình hiệu năng CPU hiện đại rất phức tạp đến mức gần như không thể hiểu được. Ngay cả các trình giả lập phần cứng chi tiết cũng không bao giờ có thể khớp với logic chính xác của chip, vì vậy điều chỉnh chính xác đơn giản là không thể nữa.
Vẫn còn một nơi cho một số mã hóa tay. Các thư viện toán học (như hàm exp), cũng như các phép toán đại số tuyến tính quan trọng hơn (như nhân ma trận) vẫn thường được mã hóa bởi các chuyên gia làm việc cho nhà cung cấp phần cứng (ví dụ Intel hoặc AMD hoặc IBM), nhưng có lẽ chúng chỉ cần một vài lập trình viên trình biên dịch đỉnh cao trên mỗi máy tính siêu lớn.