2014-11-26 7 views

답변

1

작성한 메시지가 실제로 무시되고 메시지가 사용되지 않고 폐기 된 경우에만 언급되는 성능 이점이 있습니다. 문자열을 실제로 사용 (예 : 기록 또는 인쇄) 할 때마다 형식 문자열을 사용하면 성능상의 이점이 없습니다.

따라서이 이점은 로그 메시지의 수준이 로거에 설정된 현재 로그 수준보다 낮은 경우 로깅 방법에만 존재합니다. 이 경우 형식 문자열을 사용하고 인수를 개별적으로 전달하는 경우 문자열 연결을 완전히 피할 수 있습니다. 일반적으로 대부분의 로그 메시지는 일반적으로 낮은 수준을 가지며 대부분의 경우 실제 로그 수준이 더 높은 수준으로 설정되기 때문에 이는 일반적인 경우입니다. 따라서 성능이 중요한 프로덕션 환경에서는 대부분의 로그 메시지를 무시하고 전체 문자열을 생성 할 필요가 없습니다.

System.out.println()의 경우 표준 출력은 항상 활성이기 때문에이 장점은 없습니다. 모든 호출은 작성되고 인쇄되는 메시지에 대한 문자열로 이어집니다. System.out.println()의 로그 레벨은이 메시지에 대한 일부 호출을 무시하기 위해 높은 값으로 설정할 수 있습니다. 따라서 문자열 연결은 항상 수행되어야하며 호출 코드에 의해 수행되는지 또는 메소드 자체에 의해 수행되는지는 관계가 없습니다.

올리버가 언급 한 것처럼 System.out.printf()과 유사한 방법이 있으며 syntax of the format string 만 다릅니다.

+0

Wender : "표준 출력은 항상 활성"이라는 의미로 명확히 설명해 주시겠습니까? –

+0

@gansai 답변을 연장했습니다. –