Tôi đang làm việc trên một ứng dụng và một phương pháp thiết kế liên quan đến việc sử dụng instanceof
toán tử cực kỳ nặng . Mặc dù tôi biết rằng thiết kế OO thường cố gắng tránh sử dụng instanceof
, đó là một câu chuyện khác và câu hỏi này hoàn toàn liên quan đến hiệu suất. Tôi đã tự hỏi nếu có bất kỳ tác động hiệu suất? Là chỉ nhanh như ==
?
Ví dụ, tôi có một lớp cơ sở với 10 lớp con. Trong một hàm duy nhất có lớp cơ sở, tôi kiểm tra xem lớp đó có phải là một thể hiện của lớp con không và thực hiện một số thường trình.
Một trong những cách khác mà tôi nghĩ đến khi giải quyết nó là sử dụng nguyên hàm số nguyên "loại id" và sử dụng bitmask để biểu diễn các thể loại của các lớp con, và sau đó chỉ cần so sánh mặt nạ bit của các lớp con "id id" với một mặt nạ không đổi đại diện cho thể loại.
Được instanceof
bằng cách nào đó được tối ưu hóa bởi JVM để được nhanh hơn mà? Tôi muốn gắn bó với Java nhưng hiệu suất của ứng dụng là rất quan trọng. Sẽ thật tuyệt nếu ai đó đã từng đi trên con đường này trước đây có thể đưa ra một số lời khuyên. Tôi đang quá cố chấp hay tập trung vào những điều sai trái để tối ưu hóa?