Tôi vừa đọc Thuật toán này có thể vẫn được coi là thuật toán Tìm kiếm nhị phân không? và nhớ lại rằng một vài năm trước tôi đã viết một bộ chỉ mục / tìm kiếm các tệp nhật ký để tìm các mục nhật ký trong các tệp văn bản lớn bằng cửa sổ ngày / giờ.
Trong khi thực hiện điều này, tôi quyết định thử tìm kiếm nội suy (tôi không biết đó là tên của nó, tôi tự mình vấp phải ý tưởng này). Sau đó, vì một số lý do, tôi tiếp tục ý tưởng xen kẽ các bước nội suy với các bước phân tách nhị phân: Ở bước 0 tôi sẽ nội suy để quyết định điểm kiểm tra, sau đó bước 1 tôi sẽ lấy điểm giữa chính xác, v.v.
Sau đó, tôi đã điểm chuẩn hệ thống bằng cách sử dụng tìm kiếm nội suy thuần túy, tìm kiếm nhị phân thuần túy và nỗ lực kết hợp của tôi. Cách tiếp cận xen kẽ là một người chiến thắng rõ ràng, cả về thời gian và số lượng bài kiểm tra cần thiết trước khi tìm ra một bộ thời gian được chọn ngẫu nhiên.
Lấy cảm hứng từ câu hỏi được liên kết, tôi chỉ thực hiện một tìm kiếm nhanh cho "tìm kiếm nội suy xen kẽ và tìm kiếm nhị phân" và không tìm thấy gì. Tôi cũng đã thử "tìm kiếm nội suy hedged" như đề xuất trên nhận xét của tôi về một trong những câu trả lời.
Tôi đã vấp phải một điều đã biết? Có bất kỳ biện minh lý thuyết nào cho việc nó nhanh hơn đối với một số loại dữ liệu nhất định không? Các tệp nhật ký thường lớn theo thời gian (ví dụ 1-2 GB văn bản với khoảng 10 triệu hàng để tìm kiếm) và sự lan truyền ngày / lần trong đó rất phức tạp với các đợt hoạt động lớn, thời gian cao điểm chung và thời gian yên tĩnh. Các bài kiểm tra điểm chuẩn của tôi được lấy mẫu từ một phân phối đồng đều về thời gian mục tiêu cần tìm.