thể trùng lặp:
Why are interface method invocations slower than concrete invocations?Loại nào nhanh, Tóm tắt hoặc Giao diện?
tôi thời gian gần đây đã có một cơ hội để xuất hiện trong một cuộc phỏng vấn, trong đó người phỏng vấn hỏi cái nào là nhanh hơn trong Tóm tắt lớp và Interface. Mặc dù tôi đã nhầm lẫn với câu hỏi nhưng tôi trả lời Giao diện chủ yếu là vì tôi nghĩ rằng khái niệm ràng buộc muộn có thể gây ra sự chậm trễ hiệu suất trong lớp Tóm tắt. Sau khi khám phá cùng một câu hỏi này trên web, tôi đã biết rằng các phương thức Tóm tắt nhanh hơn mặc dù theo một số blog Các phương thức giao diện nhanh hơn. Tôi hơi bối rối vì vậy tôi nghĩ để hỏi câu hỏi này để có một sự hiểu biết chính xác mà cái nào là nhanh hơn và tại sao với lý do mạnh mẽ.
Theo lớp Tóm tắt sau đây là nhanh nhưng không có lý do chính đáng cho nó. http://www.codeproject.com/Articles/11155/Abstract-Class-versus-Interface
bị cám dỗ nghiêm trọng để lặp lại quy tắc đầu tiên hai lần, như trong tất cả những "quy tắc đầu tiên của Câu lạc bộ ..." – tucuxi
Một vấn đề với triết lý đó là nó sẽ không tiết lộ liệu các yếu tố thực tế có thể gây ra một cách tiếp cận tốt hơn đôi khi thực hiện tồi tệ hơn nhiều so với một cách thường thấp hơn.Ví dụ, với sự lựa chọn giữa hai phần mã, một trong số đó yêu cầu một vài bốn truy cập vtable và một trong số đó yêu cầu phân bổ thêm 32 byte rác, có thể là phần tạo ra nhiều rác hơn thường nhanh hơn, nhưng có thể cuối cùng sẽ chậm hơn nhiều nếu có rất nhiều rác thải gen2 được xúc động giữa các chu kỳ thu thập gen0. – supercat
quan điểm của tôi là việc tối ưu hóa tay ở mọi nơi là việc sử dụng thời gian của bạn kém hơn nhiều so với việc tối ưu hóa * chỉ khi nó thực sự đếm *. Hồ sơ đầu tiên, tìm những gì nóng và tối ưu hóa * đó *. Nếu không, bạn đang lãng phí thời gian và công sức. – tucuxi