sau đó duy trì một bộ nhớ cache LRU dựa trên đầu vào gần đây nhất bởi vì mọi người có nhiều khả năng lặp lại tìm kiếm
Đó có thể là một sự lựa chọn thiết kế hợp lý, nhưng trong cuộc phỏng vấn tôi muốn cụm từ mà nhiều như một câu hỏi cho người phỏng vấn: "sẽ là hợp lý để giả định rằng các cuộc gọi sẽ giống như được thực hiện với các giá trị gần đây, hoặc có một số nhóm dự kiến khác (số lượng lớn sẽ được yêu cầu thường xuyên hơn sau đó nhỏ hoặc ngược lại)?"
Ví dụ, nó có thể có ý nghĩa với bộ nhớ cache LRU, nhưng không bao giờ vứt bỏ các giá trị cho 10, 20, 30, 40, v.v. Đó là trường hợp xấu nhất để tính giai thừa khi bộ nhớ cache đầy với các giá trị đó phải thực hiện 10 phép nhân.
Một xem xét bạn có thể thực hiện là máy tính có thể dễ dàng đối phó với giai thừa nhất định:
- 12! là tệp lớn nhất có thể được giữ trong từ 32 bit.
- 20! là tệp lớn nhất có thể được giữ trong từ 64 bit.
- 34! là tệp lớn nhất có thể được giữ trong từ 128 bit.
Vì các máy ngày nay có thể dễ dàng xử lý số học 64 bit (thậm chí có thể là số học 128 bit), nên cũng không bao giờ nhớ giá trị cho 20! hoặc bên dưới khi bộ nhớ cache đầy các giá trị lớn hơn.
Trường hợp xấu nhất để tra cứu lỗi bộ nhớ cache sẽ phụ thuộc vào cách bạn lưu bộ nhớ cache. Có một mảng được sắp xếp theo đối số cho hàm không? (tra cứu là O (log n)) Đây có phải là mảng trong thứ tự LRU không?(tra cứu cache nhớ là O (n)). Tôi nghĩ bạn cũng muốn làm rõ rằng bạn muốn tìm kiếm bộ nhớ cache để luôn trả về giá trị cao nhất trong bộ nhớ cache nhỏ hơn những gì bạn đang tìm kiếm - giá trị bộ nhớ cache đó đại diện cho công việc mà bạn không phải làm cho tính toán giai thừa cụ thể này.
Nguồn
2011-08-28 15:50:57
Có đủ thông tin được cung cấp để xác định chính sách bộ nhớ cache không? LRU sẽ là một cược an toàn, nhưng nó sẽ phụ thuộc vào cách sử dụng. I.e - Điều gì sẽ xảy ra nếu việc sử dụng được liệt kê thông qua 1-100 mỗi lần. Trong trường hợp đó, bạn có thể bộ nhớ cache mười đắt nhất để tính toán? – Smudge202