JAVASCRIPT

자바스크립트 문자열 역순으로 뒤집는 방법 성능 비교

Neda 2024. 4. 30. 16:37

자바스크립트 문자열 역순으로 뒤집는 방법 성능 비교

자바스크립트에는 문자열을 뒤집는 메서드는 존재하지 않습니다. 따라서 직접 구현하여 사용해야 합니다. 여기서는 문자열을 뒤집는 3가지 방법과 성능에 대해 비교합니다

 

배열 메서드 조합

function reverseString(str) {
  return str.split("").reverse().join("");
}

 

반복문 사용

function reverseString2(str) {
  let reversed = "";
  for (let character of str) {
    reversed = character + reversed;
  }
  return reversed;
}

 

reduce() 사용

function reverseString3(str) {
  return str
    .split("")
    .reduce((reversed, character) => character + reversed, "");
}

 

성능비교

각각의 함수를 1백만번 반복하여 실행 시간을 구함

짧은 영문 글

"lorem ispum dolor sit amet, consectetur adipiscing elit."
  배열 메서드 조합 반목분 사용 reduce() 사용
1회차 910 481 353
2회차 943 457 344
3회차 921 465 351
4회차 926 456 345
5회차 893 478 336
평균 918.6 467.4 345.8

속도: reduce() > 반복문 > 배열 메서드 조합

 

짧은 한글 문장

"자바스크립트는 객체 기반의 스크립트 프로그래밍 언어이다."
  배열 메서드 조합 반목분 사용 reduce() 사용
1회차 1179 366 833
2회차 1344 366 846
3회차 1230 355 883
4회차 1260 358 890
5회차 1306 349 886
평균 1263.8 358.8 867.6

속도: 반복문 > reduce() > 배열 메서드 조합

 

짧은 숫자 문장

"123456789123456789123456789"
  배열 메서드 조합 반목분 사용 reduce() 사용
1회차 528 247 230
2회차 515 277 251
3회차 548 304 239
4회차 536 247 254
5회차 529 245 234
평균 531.2 264 241.6

속도: reduce() > 반복문 > 배열 메서드 조합

 

긴 영문 문장

"JavaScript, often abbreviated as JS, is a programming language and core technology of the Web, alongside HTML and CSS. 99% of websites use JavaScript on the client side for webpage behavior. Web browsers have a dedicated JavaScript engine that executes the client code. These engines are also utilized in some servers and a variety of apps. The most popular runtime system for non-browser usage is Node.js. JavaScript is a high-level, often just-in-time compiled language that conforms to the ECMAScript standard.[11] It has dynamic typing, prototype-based object-orientation, and first-cl"
  배열 메서드 조합 반목분 사용 reduce() 사용
1회차 8324 4315 2951
2회차 8604 4294 2825
3회차 8323 4397 2806
4회차 8376 4266 2799
5회차 9040 4335 2787
평균 8533.4 4321.4 2833.6

속도: reduce() > 반복문 > 배열 메서드 조합

 

긴 한글 문장

"자바스크립트(영어: JavaScript)는 객체 기반의 스크립트 프로그래밍 언어이다. 이 언어는 웹 브라우저 내에서 주로 사용되며, 다른 응용 프로그램의 내장 객체에도 접근할 수 있는 기능을 가지고 있다. 또한 Node.js와 같은 런타임 환경과 같이 서버 프로그래밍에도 사용되고 있다. 자바스크립트는 본래 넷스케이프 커뮤니케이션즈 코퍼레이션의 브렌던 아이크(Brendan Eich)가 처음에는 모카(Mocha)라는 이름으로, 나중에는 라이브스크립트(LiveScript)라는 이름으로 개발하였으며, 최종적으로 자바스크립트가 되었다. 자바스크립트가 썬 마이크로시스템즈의 자바와 구문이 유사한 점도 있지만, 이는 사실 두 언어 모두 C 언어의 기본 구문에 바탕을 뒀기 때문이고, 자바와 자바스크립트는 직접적인 연관성은 약하다. 이름과 구문 외에는 자바보다 셀프나 스킴과 유사성이 많다. 자바스크립트는 ECMA스크립트(ECMAScript)의 표준 사양을 가장 잘 구현한 언어로 인정받고 있으며 ECMAScript 5(ES5)까지는 대부분의 브라우저에서 기본적으로 지원되었으나 ECMAScript 6 이후부터는 브라우저 호환성을 위해 트랜스파일러로 컴파일된다."
  배열 메서드 조합 반목분 사용 reduce() 사용
1회차 19037 5405 11482
2회차 18591 5265 11254
3회차 18356 5193 11588
4회차 18391 5137 11498
5회차 18509 5184 11496
평균 18576.8 5236.8 11463.6

속도: 반복문 > reduce() > 배열 메서드

 

결론

영문 및 숫자에서는 일반적으로 reduce가 빠름

한글 문장에서는 반복문이 가장 빠름

영문 문장에 한글이 하나라도 포함되면 반복문이 제일 빨라짐(????)

왼쪽: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" / 오른쪽 " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaㅁ"

따라서 성능이 준수한 반복문이 나아 보임