JavaScript: string 到 int 转换方式的性能
JavaScript: Performance about conversion ways from string to int
将字符串转换为任意数字
方式一
console.log(+"3")
方式二
console.log("3" * 1)
方式三
console.log(~~ "3")
方式四
console.log(parseInt("3"))
console.log(parseFloat("3"))
以上所有结果都提供相同的结果。但单独它可能会提供一些额外的功能。但我想知道哪一个最适合性能?
我认为 "1"*1
(方法 2)是将字符串转换为 int 的最佳方法之一。这是正确的吗?如果我错了,请告诉我哪个最好,为什么?
But I want to know which one is best for performance?
自己测试一下
const n = 3
function first (num) {
return +num
}
function second (num) {
return num * 1
}
function third (num) {
return ~~ num
}
function forth (num) {
return parseInt(num)
}
const count = 10000000
const data = new Array(count).fill(n);
console.time('first')
data.map(first)
console.timeEnd('first')
console.time('second')
data.map(second)
console.timeEnd('second')
console.time('third')
data.map(third)
console.timeEnd('third')
console.time('forth')
data.map(forth)
console.timeEnd('forth')
随机数
function first (num) {
return +num
}
function second (num) {
return num * 1
}
function third (num) {
return ~~ num
}
function forth (num) {
return parseInt(num)
}
const data = "34 123456789 0 0.1 10 15s 1,000 011 45 4512 459 8348 3418 2342.3 4.5 34134343 341234034 3434 340 3481 3869 38906 4 1 2 45 48 38.3 xx 341,430,341 34 123456789 0 0.1 10 15s 1,000 011 45 4512 459 8348 3 906".split(' ');
console.time('first')
data.map(first)
console.timeEnd('first')
console.time('second')
data.map(second)
console.timeEnd('second')
console.time('third')
data.map(third)
console.timeEnd('third')
console.time('forth')
data.map(forth)
console.timeEnd('forth')
将字符串转换为任意数字
方式一
console.log(+"3")
方式二
console.log("3" * 1)
方式三
console.log(~~ "3")
方式四
console.log(parseInt("3"))
console.log(parseFloat("3"))
以上所有结果都提供相同的结果。但单独它可能会提供一些额外的功能。但我想知道哪一个最适合性能?
我认为 "1"*1
(方法 2)是将字符串转换为 int 的最佳方法之一。这是正确的吗?如果我错了,请告诉我哪个最好,为什么?
But I want to know which one is best for performance?
自己测试一下
const n = 3
function first (num) {
return +num
}
function second (num) {
return num * 1
}
function third (num) {
return ~~ num
}
function forth (num) {
return parseInt(num)
}
const count = 10000000
const data = new Array(count).fill(n);
console.time('first')
data.map(first)
console.timeEnd('first')
console.time('second')
data.map(second)
console.timeEnd('second')
console.time('third')
data.map(third)
console.timeEnd('third')
console.time('forth')
data.map(forth)
console.timeEnd('forth')
随机数
function first (num) {
return +num
}
function second (num) {
return num * 1
}
function third (num) {
return ~~ num
}
function forth (num) {
return parseInt(num)
}
const data = "34 123456789 0 0.1 10 15s 1,000 011 45 4512 459 8348 3418 2342.3 4.5 34134343 341234034 3434 340 3481 3869 38906 4 1 2 45 48 38.3 xx 341,430,341 34 123456789 0 0.1 10 15s 1,000 011 45 4512 459 8348 3 906".split(' ');
console.time('first')
data.map(first)
console.timeEnd('first')
console.time('second')
data.map(second)
console.timeEnd('second')
console.time('third')
data.map(third)
console.timeEnd('third')
console.time('forth')
data.map(forth)
console.timeEnd('forth')