【问题标题】:JavaScript: Performance about conversion ways from string to int [duplicate]JavaScript:关于从字符串到整数的转换方式的性能[重复]
【发布时间】:2019-10-14 08:58:24
【问题描述】:

将字符串转换为任意数字

方式 1

console.log(+"3")

方式 2

console.log("3" * 1)

方式 3

console.log(~~ "3")

方式 4

console.log(parseInt("3"))
console.log(parseFloat("3"))

以上所有结果都提供相同的结果。但单独它可能会提供一些额外的功能。但我想知道哪一个最适合性能?

我认为"1"*1 (way-2) 是将字符串转换为 int 的最佳方法之一。这是正确的吗?如果我错了,请告诉我哪个最好,为什么?

【问题讨论】:

  • 你真的想得到一个整数值吗?
  • @Ivar 我会将您的答案推荐给我的队友。所以我不想为我的上述方式单独链接。
  • “什么是最好的/最快的/...”要求基于意见的答案,这与 SO 无关。
  • @NinaScholz 是的。
  • @RameshRajendran 实际上答案是“它实际上取决于浏览器”。在提到~~ 的同一答案中提到的JSPerf 对我来说表明隐含的+num 是最快的。话虽如此,除非您进行大量可笑的转换,否则我认为您永远不会注意到差异。

标签: javascript string typescript ecmascript-6 int


【解决方案1】:

但我想知道哪一个最适合性能?

自己测试一下

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

【讨论】:

    猜你喜欢
    • 2013-01-17
    • 1970-01-01
    • 1970-01-01
    • 2011-11-18
    • 2015-06-06
    • 2011-01-30
    • 2015-08-10
    • 2020-01-06
    相关资源
    最近更新 更多