Tôi chạy một điểm chuẩn nhiều lần, để ghi lại việc đọc trung bình. Nhưng tôi nhận thấy rằng sau lần chạy đầu tiên, các lần chạy tiếp theo sẽ nhanh hơn. Tôi đoán nó có một cái gì đó để làm với các Instruction Cache, vì vậy khi tôi chạy chương trình thời gian tới, các điểm chuẩn đã có hướng dẫn trong bộ nhớ cache. Có cách nào để bắt đầu một chương trình với cả hướng dẫn lạnh và bộ đệm dữ liệu không?Làm thế nào để bắt đầu một chương trình với bộ nhớ cache lạnh
6
A
Trả lời
4
Đây là hành vi bình thường. Một cách để tránh vấn đề này là chạy vài khởi động trước khi chạy chính. Những lần khởi động này sẽ ghi đè lên bộ nhớ cache đã phát triển lên chương trình đang chạy trước đó. Trong khi tính toán giá trị trung bình, loại trừ các giá trị chạy khởi động chỉ thực sự chạy. Một băng ghế dự bị khác nhau đánh dấu các công cụ hiện có mà có những cách tiếp cận như thế nào. kernbench, lmbench vv. Khi có giá trị hâm nóng. Và, nếu điểm chuẩn bạn đang chạy phụ thuộc vào dữ liệu cần đọc từ đĩa thì bộ nhớ đệm đĩa cũng có một số tác động, một cách để tránh là lưu vào bộ nhớ đệm những dữ liệu đó vào ram, nếu có thể. Kỹ thuật này được sử dụng trong kernbench, để tránh, vấn đề liên quan đến bộ nhớ cache của đĩa.
Bộ nhớ cache có nhiều khả năng hơn, tôi đã nghĩ vậy? –
Điều này có thể do chương trình và dữ liệu được đọc từ đĩa, không phải do bộ đệm CPU. – sharptooth
Câu hỏi hay !! –