자바스크립트 문자열 역순으로 뒤집는 방법 성능 비교
자바스크립트에는 문자열을 뒤집는 메서드는 존재하지 않습니다. 따라서 직접 구현하여 사용해야 합니다. 여기서는 문자열을 뒤집는 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가 빠름
한글 문장에서는 반복문이 가장 빠름
영문 문장에 한글이 하나라도 포함되면 반복문이 제일 빨라짐(????)
따라서 성능이 준수한 반복문이 나아 보임
'JAVASCRIPT' 카테고리의 다른 글
Nextjs에서 tanstack-query Prefetch를 왜 해야 할까 (0) | 2024.04.22 |
---|---|
vitest에서 msw를 사용해 api mocking 시작하기 (0) | 2024.02.08 |
Firebase에서의 on the fly 방식 썸네일 이미지 최적화(Hosting, Cloud functions) (0) | 2024.01.24 |
nextjs tailwind pagination 컴포넌트 (usePagination) (0) | 2023.12.26 |
nextjs middleware rewrite를 통해 서브 도메인 적용하기 (0) | 2023.11.26 |