[Javascript] 형변환 성능비교

Seunghwa's Devlog·2023년 3월 4일
0
post-thumbnail

자바스크립트로 코딩을 하다보면 String 타입에서 Number 타입으로 또는 반대의 경우로 형변환을 해줘야 하는 경우가 생긴다.

최근에 String 타입에서 Number 타입으로 형변환을 하면서 방법은 여러가지가 있는데, 어떤 방법을 쓰는 것이 성능면에서 제일 좋을지 궁금하여 비교해본 결과를 포스팅하고자 한다.

형변환 방법에는 무엇이 있을까?

  • 비트 연산자 사용
var string = "1000", array = [];
for (var i = 0; i < 100000; i++) {
	array[i] = string >> 0;
}

'>>' 연산자는 왼쪽에 있는 값을 해당 비트만큼 오른쪽으로 이동시키는데, 숫자로 변환된 값을 반환 한다는 특징이 있다.

Javascript에서는 변수의 데이터 타입이 동적으로 변할 수 있기 때문에, 비트연산자를 사용하여 명시적으로 데이터 타입을 변환함으로써 숫자타입으로 사용될 수 있도록 보장한다.

  • 단항 더하기(+) 연산자 사용
var string = "1000", array = [];

for (var i = 0; i < 100000; i++) {

	array[i] = +string;

}
  • parseInt 사용
var string = "1000", array = [];

for (var i = 0; i < 100000; i++) {

	array[i] = parseInt(string);

}
  • 곱하기 연산자 사용
var string = "1000", array = [];

for (var i = 0; i < 100000; i++) {

	array[i] = string *= 1;

}
  • Number 사용
var string = "1000", array = [];

for (var i = 0; i < 100000; i++) {

	array[i] = Number(string);

}

성능을 비교해보자

+연산자를 사용하는 것이 제일 빠르다는 결과가 나왔고, Number를 사용하는 것과 유의미한 차이는 없었다. 곱하기 연산자를 사용하는 방법과 parseInt를 사용하는 방법이 다른 방법에 비해 현저히 느리다는 것을 확인할 수 있다.

참고 사항

이 방법들 외에도 다양한 방법들이 존재하지만, 내 기준에서 널리쓰이고 대표적인 방법이라고 생각하는 것들만 뽑아서 성능비교를 했기 때문에, 100% 정확한 결과를 보장하기는 어렵다. 참고 정도로만 보는 것을 추천한다.

결론

parseInt와 곱하기 연산자를 제외한 방법을 쓰는것을 추천한다. Number와 + 연산자를 사용하는 것이 유의미한 차이는 없지만, Number를 쓰는 것이 가독성 측면에서 명시적으로 Number 타입으로 변환한다는 의미가 들어있으므로 Number를 쓰는 것을 개인적으로 추천한다.

참고 링크

https://jsbench.me/

profile
에러와 부딪히고 새로운 것을 배우며 성장해가는 과정을 기록합니다!

0개의 댓글