728x90
소수점 반올림할때 toFixed()함수를 주로 사용했습니다. 그런데 toFixed()함수가 문자로 값을 반환하다 보니 계산할때 ParseFloat()함수를 추가로 사용해야 하는 경우가 꽤 있습니다. 이렇게 추가함수를 사용할 경우 속도가 떨어지는게 당연할텐데 그게 어느 정도인지 궁금해서 테스트를 해봤습니다.
백만회 반복, 소수점 2자리 반올림
const t0 = performance.now()
for (let i = 0; i < 1000000; i++) {
let a = 341.348181293
a.toFixed(2)
}
const t1 = performance.now()
console.log('toFixed')
console.log(t1 - t0, 'msecs')
const t2 = performance.now()
for (let i = 0; i < 1000000; i++) {
let a = 341.348181293
parseFloat(a.toFixed(2))
}
const t3 = performance.now()
console.log('parseFloat,toFixed')
console.log(t3 - t2, 'msecs')
const t4 = performance.now()
for (let i = 0; i < 1000000; i++) {
let a = 341.348181293
let b = Number(a.toFixed(2))
}
const t5 = performance.now()
console.log('Number,toFixed')
console.log(t5 - t4, 'msecs')
const t6 = performance.now()
for (let i = 0; i < 1000000; i++) {
let a = 341.348181293
let b = Math.round(a)*100/100
}
const t7 = performance.now()
console.log('Math.round')
console.log(t7 - t6, 'msecs')
const t8 = performance.now()
for (let i = 0; i < 1000000; i++) {
let a = 341.348181293
let b = (Math.round(a)*100/100).toString()
}
const t9 = performance.now()
console.log('Math.round,toString')
console.log(t9 - t8, 'msecs')
// toFixed
// 169.20000000298023 'msecs'
// parseFloat,toFixed
// 255.80000001192093 'msecs'
// Number,toFixed
// 307.20000000298023 'msecs'
// Math.round
// 2.7999999970197678 'msecs'
// Math.round,toString
// 11.799999997019768 'msecs'
Math.round가 압도적으로 빠릅니다. toString()으로 문자 변환해도 더 빠릅니다.
빠른 계산이 필요한 경우에는 Math.round를 사용해야겠습니다.
728x90
'Web > Javascript' 카테고리의 다른 글
4 Point Sphere (0) | 2022.12.14 |
---|---|
javascript map함수 사용법 (0) | 2022.07.05 |
Electron을 이용한 데스크탑앱 개발 시작하기 (0) | 2022.03.08 |
[javascript] canvas 기초 사각형 그리기 (0) | 2022.03.04 |