tôi tò mò như thế nào những người khác đã giải quyết vấn đề này, và những vấn đề có thể ẩn nấp đằng sau những giải pháp ngây thơ:số nguyên duy nhất/dài băm thế hệ then chốt trong chuỗi cho compairson nhanh
tôi có một hệ thống xử lý dữ liệu mà thị trường chứng khoán. Có hàng chục nghìn biểu tượng, với giá/kích cỡ liên quan, chảy vào hệ thống với tốc độ vài nghìn mili giây.
Một trong những thao tác cơ bản cần thực hiện trên mỗi lần đánh dấu là so sánh chuỗi để xem liệu kết quả khớp có khớp với biểu tượng mà chúng ta quan tâm hay không. của toàn bộ hệ thống.
Tôi đang nghĩ đến việc tạo băm của chuỗi ký hiệu và lưu trữ nó bằng bản ghi. Để so sánh tiếp theo, hệ thống nên sử dụng băm này (là một int hoặc một thời gian dài, so sánh phải là một hoạt động đơn lẻ, thay vì lặp qua từng ký tự của chuỗi cho đến khi tìm thấy sự không phù hợp).
Hãy bỏ qua chi phí tạo bản thân hàm băm (trong thực tế, thực tế có thể bị cấm). Vấn đề duy nhất tôi có thể thấy là với một số lượng lớn các ký hiệu duy nhất, một va chạm băm (hai biểu tượng riêng biệt tạo ra cùng một băm) sẽ bị tàn phá. Có một thuật toán băm đảm bảo rằng các chuỗi khớp với các ràng buộc nhất định (chẳng hạn như giới hạn về số ký tự) là duy nhất không?
EDIT: Tôi sẽ viết mã này bằng Java. Không chắc chắn về chất lượng (va chạm) của hashCode hoặc tốc độ mà nó được tính toán.
Bạn đã cân nhắc sử dụng một hoặc nhiều hàm băm mục đích chung sau: hashhttp: //www.partow.net/programming/hashfunctions/index.html –
Dành cho những người muốn nhấp vào liên kết http: // www. partow.net/programming/hashfunctions/index.html – cheffe