Một trong những lý do "tại sao" là ngoại lệ và xử lý ngoại lệ là giả định là ngoại lệ; tức là mã hiếm khi được thực hiện. Nó sau thời gian mà trình biên dịch JIT dành cho việc tối ưu hóa các trình xử lý ngoại lệ sẽ có ít lợi ích cho hiệu năng tổng thể.
Trình tối ưu hóa trình biên dịch JIT phải cân bằng lợi ích hiệu suất của các tối ưu hóa có hiệu quả chống lại các chi phí tối ưu hóa. Loại thứ hai bao gồm:
- chi phí kiểm tra điều kiện tiên quyết phức tạp để xem nếu một tối ưu hóa là có thể,
- chi phí kinh tối ưu hóa thực tế, và
- chi phí (Oracle) thực hiện và duy trì một phần phức tạp của phần mềm mà thực hiện một tối ưu hóa đó là (trong điều kiện bình thường/giả định) sẽ không có hiệu quả.
Cũng có thể có lý do kỹ thuật ngăn chặn tối ưu hóa xử lý ngoại lệ. Ví dụ, nó có thể không dễ dàng (hoặc thậm chí có thể) cho trình tối ưu hóa để tìm ra nơi luồng kiểm soát "đến từ đâu". Do đó, tối ưu hóa dựa trên việc biết rằng (ví dụ: các công cụ lưu trong bộ nhớ đệm trong sổ đăng ký, không thể thực hiện các biểu thức con phổ biến, ...).
Nguồn
2012-07-19 11:49:45
[Câu hỏi này] (http://stackoverflow.com/questions/299068/how-slow-are-java-exceptions) có thể hữu ích. – Leri