2008년 02월 12일
[Q] 자바에서 문자열을 합성하는 방법.
최근 대규모 사이트 구축 시에는 프로파일러(profiler)라는 소스 코드 검증 및 성능 분석 툴을 많이 사용합니다.
프로그램 내에서 잘못된 코드나 쿼리들을 찾아내고, 잠재적인 문제점들을 경고해주는 도구이죠.
개발자들이 수많은 날들을 노력해서 사이트를 구축한다고 해도 사소한 실수 하나 때문에 전체 웹 사이트가 다운되고,
신문 기사에 모 회사 홈페이지가 다운되었다는 기사가 노출되며 엄청난 손해가 발생하기도 때문입니다.
이런 툴들이 있다는 것으로 인해 그나마 문제를 사전에 방지할 수 있다는 점에서 좋지만,
가장 좋은 방법은 역시 개발자 스스로가 최적의 성능을 발휘하고,
문제가 발생할 소지가 없는 코드를 생산하는 것입니다.
사소한 것에 집착해서야 무슨 큰 일을 하겠냐는 의견도 있을 수 있지만,
날아가던 비행기가 추락하고, 우주왕복선이 폭발하고, 숭례문이 타버리는 일들이 모두
인간의 사소한 부주의와 안이함 때문이죠.
웅대한 사업을 시작하기 위해서는 패기가 필요하지만, 거대한 사업을 마무리 지으려면 섬세함이 필요한 법입니다.
자바에서 문자열을 합성하는 방법은 여러가지가 있습니다.
어떤 방식을 쓰고 계시는지요? 그리고, 최선의 방법은 무엇일까요?
예전에 제가 다니던 회사에는 이런 사소한 규칙 하나도 제대로 정하지 못해서,
아주 거대한 프로젝트를 제대로 말아먹은 경험이 있습니다.
프로그램 내에서 잘못된 코드나 쿼리들을 찾아내고, 잠재적인 문제점들을 경고해주는 도구이죠.
개발자들이 수많은 날들을 노력해서 사이트를 구축한다고 해도 사소한 실수 하나 때문에 전체 웹 사이트가 다운되고,
신문 기사에 모 회사 홈페이지가 다운되었다는 기사가 노출되며 엄청난 손해가 발생하기도 때문입니다.
이런 툴들이 있다는 것으로 인해 그나마 문제를 사전에 방지할 수 있다는 점에서 좋지만,
가장 좋은 방법은 역시 개발자 스스로가 최적의 성능을 발휘하고,
문제가 발생할 소지가 없는 코드를 생산하는 것입니다.
사소한 것에 집착해서야 무슨 큰 일을 하겠냐는 의견도 있을 수 있지만,
날아가던 비행기가 추락하고, 우주왕복선이 폭발하고, 숭례문이 타버리는 일들이 모두
인간의 사소한 부주의와 안이함 때문이죠.
웅대한 사업을 시작하기 위해서는 패기가 필요하지만, 거대한 사업을 마무리 지으려면 섬세함이 필요한 법입니다.
자바에서 문자열을 합성하는 방법은 여러가지가 있습니다.
어떤 방식을 쓰고 계시는지요? 그리고, 최선의 방법은 무엇일까요?
예전에 제가 다니던 회사에는 이런 사소한 규칙 하나도 제대로 정하지 못해서,
아주 거대한 프로젝트를 제대로 말아먹은 경험이 있습니다.
# by | 2008/02/12 15:17 | Development | 트랙백 | 핑백(2) | 덧글(5)





... 서 실천한다 돌아보는 공감받은 공감하는 친구들은 ← 2008년 2월 1 5 6 15 15 Feb 2008 0 metoo 웅대한 사업을 시작하기 위해서는 패기가 필요하지만, 거대한 사업을 마무리 지으려면 섬세함이 필요한 법입니다. 오전 10시 35분 댓글 (0) « 2008년 02월 06일, 수요일 Today 32 / Total 740 ... more
... 12 흥미로운 문제들… 080212 Tag: Dev.Think — Heart @ 5:29 오후 [Q] 클래스 멤버 변수와 지역 변수의 차이는? [Q] 자바에서 문자열을 합성하는 방법 얼핏 보면 엄청 쉬워 보이지만 곰곰히 생각하면 어려운… 내공에 따라 답이 갈릴 것 같은 그런 문제들인 것 같다. 특히 문자열 합성 문제는 스트롱베 ... more
strResult = strVar001 + "some string" + strVar002;
라 작성되있더라도 바이트코드로 변환시에 StringBuffer를 사용하도록 변경된 것으로 알고 있습니다. 그 이전 버전의 환경에선 StringBuffer를 명시적으로 사용하는 것이 좋다고 알고 있습니다.
혹시 String/StringBuffer 외의 다른 스트링 합성 방법이 있나요?
에 보면..
"java.lang.StringBuilder가 추가되었다. 이것은 java.lang.StringBuffer의 비동기(unsynchronized)버전이다. StringBuffer가 동기화되어 있기 때문에 문자열 연결이 약간 느리다. 컴파일러는 StringBuilder를 문자열 합치기 연산에 사용할 것이고, 이로인해 몇몇 어플리케이션에서는 상당한 성능향상을 보일 것이다. (다시말해, 쓰레드에 안전한 연산에서는 StringBuffer보다 StringBuilder를 사용하는 것이 좋다!)"
라는 내용이 보입니다. 이 부분은 미처 몰랐는데 나중에 한번 살펴봐야겠군요.(이게 2년전 내용이니 저도 참 느리군요..(먼산))
음... 컴파일러에서 사용한다는 이야기는 컴파일 단계에서 멀티쓰레드 상태인지 판별이 가능하다고 생각해도 되는 건지...;;
아무튼 흥미롭네요. 링크도 잘 보았습니다. 감사합니다.