1

我从客户的内部 API 获得了一个巨大的数据集。它将包含一堆价格的数字数据,例如:31.23 美元。他把它们给了我,{"spend":"21.23"}这很好,但我担心在 1000 多个项目之后并parseFloat()在所有这些值上运行(在绘制它们的顶部)可能会占用客户端浏览器的大量资源。

有人做过吗?

==更新==

对不起。我的问题太模糊了。我担心它是一个字符串,我正在解析它。我的问题是 parseFloat 比 int 快。即附加parseFloat("12.12")到 div 比简单地附加12.12要快,如果是这样,要快多少。

4

4 回答 4

7

在我的工作机器(Mac OS X,Intel 2 GHz Core i7)上,我在 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 万次调用(以及虚拟上),我认为你应该很好。

于 2011-07-18T18:49:58.507 回答
2

关于 parseFloat 或 parseInt 的速度,MDN建议使用一元运算符+代替,如

+"12.12"
=> 12.12    

MDN 链接

一元加号运算符在其操作数之前并计算其操作数,但如果尚未转换为数字,则尝试将其转换为数字。虽然一元否定 (-) 也可以转换非数字,但一元加号是将某物转换为数字的最快和首选方法,因为它不对数字执行任何其他操作。

于 2015-07-18T00:22:17.723 回答
0

你知道那parseFloat()是基于浏览器的。据我所知,浏览器在 200 个值之后可能会崩溃,在 10.000 个值之后可以正常工作。

这取决于浏览器有多少个选项卡,正在运行哪些其他脚本,有多少 CPU 可用于处理,当然还有什么浏览器

如果您的客户使用带有 1000 个插件的 firefox,它将永远不会顺利运行您的脚本。

只是我的观点。如果你想做得很好,你应该在服务器上预处理然后显示。

于 2011-07-18T18:26:36.143 回答
0

类型

javascript:a = +新日期;x = 100000; while (--x) parseFloat("21.23"); 警报(+新日期 - a);

进入你的网址栏。

这是唯一确定的方法。

老实说,你无法回答这个问题。这取决于浏览器,例如,firefox 8 应该比 6 快,等等。

于 2011-07-18T18:50:41.057 回答