我从客户端的内部API获取了一个庞大的数据集。它将包含一堆价格的数字数据,如:31.23美元。他把它作为{"spend":"21.23"}
给了我,这很好,但是我担心在1000多个项目之后并且对所有这些值运行parseFloat()
(在绘制它们之上)可能是客户端的资源很重浏览器。
有没有人这样做过?
==更新==
对不起我的问题太模糊了。我担心的是它是一个字符串,我正在解析它。我的问题是parseFloat比int更快。即将parseFloat("12.12")
附加到div只是简单地追加12.12
,如果是,则加快多快。
答案 0 :(得分:7)
在我的工作机器(Mac OS X,Intel 2 GHz Core i7)上,我看到the following results on jsperf.com:
Browser | parseFloat calls per second
----------------------------------------
Chrome 12 | 5.3 million
Firefox 6 | 21.7 million
IE 8 | 666.9 thousand <- totally unfair, ran on virtual machine
Opera 11 | 5.2 million
这远非详尽无遗的调查;但是在每秒超过60万次呼叫的最小(以及虚拟机上的 ),我认为你应该做得很好。< / p>
答案 1 :(得分:0)
您知道parseFloat()
基于浏览器。因此,据我所知,浏览器可能会在200个值之后崩溃,在10.000值之后可以正常工作。
这取决于浏览器有多少个选项卡,正在运行的其他脚本,可以自由处理多少CPU,当然还有哪些浏览器
如果您的客户端使用带有1000个插件的firefox,它将永远不会顺利运行您的脚本。
只是我的意见。如果你想做得好,你应该在服务器上预处理然后显示。答案 2 :(得分:0)
类型
javascript:a = +新日期; x = 100000; while(--x)parseFloat(“21.23”);警报(+新日期 - a);
进入您的网址栏。
这是唯一可以确定的方法。
诚实地说,你无法回答这个问题。这取决于浏览器,例如,firefox 8应该比6快,依此类推。
答案 3 :(得分:0)
关于parseFloat或parseInt的速度 MDN 建议改为使用一元运算符 + ,如
+"12.12"
=> 12.12
一元加运算符在其操作数之前,并计算其操作数,但是如果它已经没有,则尝试将其转换为数字。虽然一元否定( - )也可以转换非数字,但是一元加号是将某些东西转换为数字的最快和首选方式,因为它不会对数字执行任何其他操作。