• 목록
  • 아래로
  • 위로
  • 0
  • 네모
  • 조회 수 1554

JavaScript에서 문자열을 결합할 때, 보통 아래와 같은 방법을 사용합니다.

 

var TEXT = "안녕하세요!"
TEXT += "여기는 세상입니다?";

 

그리고, 그 선택은 대부분 올바릅니다.

 

var TEXT = "";

for(var cnt = 0; cnt < 50; cnt++){
  TEXT += "안녕하세요!";
}

console.log(TEXT);

 

var ARR = [];

for(var cnt = 0; cnt < 50; cnt++){
  ARR.push("안녕하세요!");
}

console.log(ARR.join(""));

 

두개의 코드중에서 덧셈을 사용한 코드가 조금 더 빠릅니다.

제가 사용하는 PC에서는 덧셈이 65,520 Ops/sec 으로 61,453 Ops/sec 인 Join 보다 조금 더 성능이 좋습니다.

 

그러나, 이 선택이 언제나 올바른 것은 아닙니다.

 

var TEXT = "";

for(var cnt = 0; cnt < 1000; cnt++){
  TEXT += "안녕하세요!";
  TEXT += " ";
}

console.log(TEXT);

 

var TEXT = "";

for(var cnt = 0; cnt < 1000; cnt++){
  TEXT += "안녕하세요! ";
}

console.log(TEXT);

 

var ARR = [];

for(var cnt = 0; cnt < 1000; cnt++){
  ARR.push("안녕하세요!");
}

console.log(ARR.join(" "));

 

위 코드에서는 꽤 다른 성능을 보입니다.

 

첫번째 코드는 덧셈을 사용하면서, 각 문자열을 공백 하나로 구분합니다.

이 코드는 6,465 Ops/sec 으로 측정되었습니다.

공백과 문자열을 따로 결합하다 보니 연산횟수가 많아 그런것 같습니다.

 

두번째 코드는 문자열 뒤에 공백을 추가했습니다.

공백을 같이 처리해서 그런지 12,676 Ops/sec 으로 첫번째 코드보다는 성능이 좋습니다.

 

그런데, 세번째 코드는 두개의 코드들보다 더욱 성능이 좋습니다.

15,117 Ops/sec 으로, 세개의 코드 중에서 제일 좋은 성능을 보입니다.

 

테스트를 해 보고 싶으시다면

https://jsperf.com/ndev-js-plus-append-1 에서 확인해 볼 수 있습니다.

 

 

 

 

 

장문일 것을 예상하여 모든 결합을 Join으로 하기에는 무리가 있습니다.

오히려 속도가 느려질 가능성도 있습니다.

 

그렇다고 단문으로만 가정하여 덧셈 기호를 사용하는 것도 성능에 안좋은 영향이 있습니다.

 

문자열의 길이와 상황에 따라서 사용할 방식을 골라 사용하는 것이 제일 현명한 것 같습니다.

작성자
네모 71 Lv. (46%) 408590/414720EXP

인스타그램 : http://instg.me/nemo_9l

댓글 0

권한이 없습니다.
번호 제목 글쓴이 날짜 조회 수
공지 [작업 완료] 설 명절 맞이 서버 업데이트 안내 3 마스터 마스터 24.02.11.17:21 1045
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 마스터 23.01.14.02:23 4716
94 유튜브 영상 다운로드 하는 요령 2 image 오후두시스토리 오후두시스토.. 17.04.08.09:55 734
93 이것 7가지 지키면 미세먼지 노출 줄일 수 있다! image 오후두시스토리 오후두시스토.. 17.04.06.11:12 208
92 기억력 증진을 위한 생활습관 12가지 image 오후두시스토리 오후두시스토.. 17.04.06.11:12 299
91 다시 데워 먹으면 안 되는 음식 5가지 2 오후두시스토리 오후두시스토.. 17.04.06.11:11 436
90 텍스트 무료 로고 만들기 사이트 4 image 오후두시스토리 오후두시스토.. 17.04.05.16:56 965
89 [할인정보] Photo Works Projects 3 무료 배포 (3일간) 1 이니스프리 이니스프리 17.04.05.00:17 314
88 [할인정보] 비트디펜더 48시간 스페셜 오퍼! 2 image 이니스프리 이니스프리 17.03.25.10:56 525
87 맥도날드 슈비버거 단품 1+1 쿠폰  2 title: 네오웨이브네오웨이브 17.03.16.13:14 347
86 [할인정보] 콰트로치즈와퍼주니어 44% 할인 + 오리지널 또는 골드 치킨프라이 50% 할인 3 image 이니스프리 이니스프리 17.03.13.12:18 208
85 리필되는 커피점 TOP 6 vs 리필 안 되는 커피점 TOP 9 3 image 이니스프리 이니스프리 17.03.12.21:28 553
84 [할인정보] IPVanish 63% 할인 쿠폰 3 이니스프리 이니스프리 17.03.12.11:20 248
83 [무료정보] 판다 인터넷 시큐리티 6개월 무료! 7 이니스프리 이니스프리 17.03.12.01:10 316
82 [할인정보] 판다 글로벌 프로텍션 2,700원 (1년 1PC) 5 이니스프리 이니스프리 17.03.11.23:30 343
81 (펌) 앱코, 감성초월 레트로 키보드 K850 & K830 마지막 하루!! 1 image 하루살이 title: 황금 서버 (30일)하루살이 17.02.28.00:41 282
80 [옥션]버거킹 와퍼 주니어 세트 100원(선착순 5000개) 3 image 하루살이 title: 황금 서버 (30일)하루살이 17.02.27.13:02 375
79 로지텍 G403 게이밍 마우스 59,900원 1 image 하루살이 title: 황금 서버 (30일)하루살이 17.02.27.13:01 364
78 [특가] 오늘 하루, TRON G41마우스 19,800원 특가 1 image 하루살이 title: 황금 서버 (30일)하루살이 17.02.27.13:00 275
77 안티앨리어싱 옵션: 알고 쓰자. 5 image 하루살이 title: 황금 서버 (30일)하루살이 17.02.25.23:57 19438
76 [할인정보] Emsisoft 안티멀웨어 할인! 이니스프리 이니스프리 17.02.23.23:13 299
75 [보안정보] Avast 업데이트 주의요망합니다 ㅠㅠ 7 이니스프리 이니스프리 17.02.22.23:29 343