Tôi đang sử dụng Log4J trong ứng dụng của mình để đăng nhập. Trước đây tôi đã sử dụng cuộc gọi gỡ lỗi như:
Lựa chọn 1:
logger.debug("some debug text");
nhưng một số liên kết gợi ý rằng tốt hơn hết là kiểm tra isDebugEnabled()
trước, như:
Lựa chọn 2:
boolean debugEnabled = logger.isDebugEnabled();
if (debugEnabled) {
logger.debug("some debug text");
}
Vì vậy, câu hỏi của tôi là " Liệu tùy chọn 2 có cải thiện hiệu suất theo cách nào không? ".
Bởi vì trong mọi trường hợp, khung Log4J đều có cùng kiểm tra gỡ lỗi. Đối với tùy chọn 2, có thể có ích nếu chúng ta đang sử dụng nhiều câu lệnh gỡ lỗi trong một phương thức hoặc lớp duy nhất, trong đó khung không cần gọi isDebugEnabled()
phương thức nhiều lần (trên mỗi cuộc gọi); trong trường hợp này, nó chỉ gọi isDebugEnabled()
phương thức một lần và nếu Log4J được cấu hình ở mức gỡ lỗi thì thực tế nó gọi isDebugEnabled()
phương thức hai lần:
- Trong trường hợp gán giá trị cho biến debugEnables và
- Thực tế được gọi bằng phương thức logger.debug ().
Tôi không nghĩ rằng nếu chúng ta viết nhiều logger.debug()
câu lệnh trong phương thức hoặc lớp và debug()
phương thức gọi theo tùy chọn 1 thì đó là chi phí cho khung Log4J so với tùy chọn 2. Vì đây isDebugEnabled()
là một phương thức rất nhỏ (về mặt mã), nó có thể là ứng cử viên tốt cho nội tuyến.