팁 & 노하우

|  분야 불문! 어떤 분야든지 자신이 알고 있는 팁이나 노하우를 남겨주세요.

조회 수 179 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

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으로 하기에는 무리가 있습니다.

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

 

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

 

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

Who's 네모

profile

메인 카카오톡 ID : kanae98 (네모)

히키코모리 블로그 : https://ndevel.net

상품판매 사이트 : https://ndevel.com


서브컬쳐 카카오톡 ID : cyemo (세모)

아니메월드 : https://open.kakao.com/o/gA8MIx1


27시간 심심하므로 채팅은 언제나 환영! '25시부터 26시 사이에 채팅 상시 대기' 랜덤 추첨 진행중 - 당첨확률 50-10!%


팁 & 노하우

분야 불문! 어떤 분야든지 자신이 알고 있는 팁이나 노하우를 남겨주세요.

  1. 앞으로 ssh 사용시 한글 사용이 가능합니다.

    Date2018.10.12 By마스터 Views12896
    read more
  2. 접속 불가 사태 수습은 진행중입니다.

    Date2018.10.05 By마스터 Views13541
    read more
  3. 회원 전용 페이지가 생겼습니다.

    Date2018.03.20 By마스터 Views14172
    read more
  4. 각 카드사별 해외이용 정지방법(2018.04.06)

    Date2018.05.28 By자뻑보이 Views270
    Read More
  5. Appcheck 업데이트 : 클리너 기능 추가

    Date2018.03.30 By이니스프리 Views276
    Read More
  6. 파이썬 텔레그램 봇에서 IndexError 해결 방법

    Date2018.03.24 By이니스프리 Views209
    Read More
  7. KT 인터넷 오피스 IP 서비스 - 홈 서버용 고정 IP 제공

    Date2018.03.20 By이니스프리 Views548
    Read More
  8. ftp 폴더 삭제 안되고 느릴때 - eXtplorer

    Date2018.02.22 Bydjdisodo Views246
    Read More
  9. 메일수신이 안된다고...? mail.yandex.com mx 리코드를 이용해보자

    Date2018.02.21 Bydjdisodo Views261
    Read More
  10. [게임하시는 분들을 위한 팁] 프래임 드랍 해결하기!

    Date2018.02.18 ByProjectSE Views166
    Read More
  11. 여러분은 Behance를 아시나요?

    Date2017.12.15 BySoto Views194
    Read More
  12. For Intel 8th GEN

    Date2017.12.15 BySoto Views274
    Read More
  13. 직구나 프로그램 다운로드시 사용 가능한 무료 해외 SMS 수신 사이트

    Date2017.12.09 By이니스프리 Views795
    Read More
  14. [멀웨어 정보] KT 홈허브 관련 DHCP 설정 변조 관련 멀웨어 유포 정보 및 대처 방법

    Date2017.12.05 By이니스프리 Views522
    Read More
  15. Windows 배치파일 작성 시 귀차니즘 1% 해결

    Date2017.12.03 BySoto Views196
    Read More
  16. 윈도우 10 업그레이드 후 windows.old 삭제 방법

    Date2017.12.01 By이니스프리 Views370
    Read More
  17. SKT 데이터 함께 쓰기, 회선수 제한, 직구폰 개통, 아이폰 직구시 주의사항 등 관련 팁

    Date2017.11.23 By이니스프리 Views1174
    Read More
  18. URL에 ?ckattempt=1이 붙거나 403 에러가 뜨는 경우에 해결 방법 (카페24)

    Date2017.11.22 By이니스프리 Views241
    Read More
  19. DB 설계하실 때 사용하면 좋을거 같은 사이트 공유합니다.

    Date2017.11.21 ByJAVA Views342
    Read More
  20. JavaScript에서 문자열 결합 방식의 성능차이

    Date2017.11.17 By네모 Views179
    Read More
  21. 아미나빌더 1.7.20 업데이트

    Date2017.11.10 By이니스프리 Views225
    Read More
  22. Windows 10 에서 Telnet 사용하기..

    Date2017.11.10 Bytitle: Fox여우나라 Views445
    Read More
  23. 이북 무료 제공 - JavaScript: Novice to Ninja

    Date2017.11.09 By이니스프리 Views296
    Read More
Board Pagination Prev 1 2 3 4 5 6 7 8 9 Next
/ 9
서버에 요청 중입니다. 잠시만 기다려 주십시오...