javascript - JavaScript:关于从字符串到整数的转换方式的性能
问题描述
将字符串转换为任意数字
方式一
console.log(+"3")
方式二
console.log("3" * 1)
方式3
console.log(~~ "3")
方式4
console.log(parseInt("3"))
console.log(parseFloat("3"))
以上所有结果都提供了相同的结果。但单独它可能会提供一些额外的功能。但我想知道哪一个最适合性能?
我认为"1"*1
(way-2) 是将字符串转换为 int 的最佳方法之一。这是对的吗?如果我错了,请告诉我哪个最好,为什么?
解决方案
但我想知道哪一个最适合性能?
自己测试一下
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')
推荐阅读
- video-streaming - 来自 IP 摄像机的“实时采样”(非流式传输)
- reactjs - 将页面路由到组件中:React
- outlook - 如何使用 C# 在我有写权限的其他用户日历中创建一个 evet?
- c - 桶排序段错误
- agda - Agda Data.Bool 求解器的使用
- angular - Angular、打字稿、谷歌图表 - 类型(日期|数字)[][] 不可分配给类型数组
> - c++ - C++ - 使用 std::list,如何打印对象私有成员的链表?
- python - 维基百科 API 包装器 WPTOOLS
- python - 如何从 apache 日志中获取 pandas 数据框?
- c# - ASP.NET Core Identity UserManager.IsInRole 调用在 2.2 中有效,但在 3.0 中抛出 InvalidOperation