2014-08-29 5 views
2

코드 스 니펫 -1은 코딩 품질이 좋지 않으며 모범 사례는 코드 스 니펫 -2입니다.
하지만 코드 스 니펫 -1에서 성능이 저하됩니까?
두 코드 조각 사이에 성능이 있습니까? 그렇다면 어떻게?StringBuffer에 한 줄 추가 및 여러 줄 추가의 차이점이 있습니까?

발췌문-1

StringBuffer strBuffer = new StringBuffer(); 
strBuffer.append("Text line 1"); 
strBuffer.append("Text line 2"); 
strBuffer.append("Text line 3"); 
strBuffer.append("Text line 4"); 
strBuffer.append("Text line 5"); 

발췌문-2

StringBuffer strBuffer = new StringBuffer(); 
strBuffer.append("Text line 1") 
     .append("Text line 2") 
     .append("Text line 3") 
     .append("Text line 4") 
     .append("Text line 5"); 

답변

2

먼저, StringBuilder (하지 StringBuffer)를 사용한다 성능. StringBuilder이 더 효율적입니다 (StringBuffer과 달리) 모든 메소드가 동기화되지 않기 때문입니다. 마지막으로 게시 된 예제는 거의 동일한 성능을 가지므로 선호하는 스타일을 사용하십시오.

+0

내 응용 프로그램은 스레드로부터 안전하므로'StringBuilder' 대신'StringBuffer'를 사용하면 문제가 없습니다. 맞습니까? – unknown

+1

@unknown'StringBuilder'는 더 빨라서 여러분의 경우'StringBuffer'를 선호합니다. –

0

코드 표현은 종종 "취향"의 문제이지만,이 두 구조는 사용하는 Java 컴파일러 내에서 동일한 최적화를 가져야합니다! (컴파일러는 당신이 작성한 것을 취하고 효율적으로 작성해야한다. 자바의 경우, 언어가 바이트 코드로 컴파일되고 바이트 코드가 실행 시간에 처리 될 때 (또는 Android 애플리케이션의 경우,

1

안녕하세요 다른 설명이 없기 때문에이 두 가지 방법을 확인하기 위해 하나의 작은 자바 프로그램을 작성했습니다. 두 가지 다른 방법으로 시도해 봤습니다. (APK 자체는 변경/업데이트 될 때 컴파일됩니다.) OS도 좋을 것 같습니다. 어떻게 든 Snippet-2가 성능면에서 항상 우수하다고 생각합니다 .1000 회 이상 실행되는 for 루프와 Snippet-2가 1보다 시간이 적게 걸릴 때마다 둘 다 넣었습니다.

가능한 모든 방법으로 자신을 시도 할 수도 있습니다.

재미 :)