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')