English 中文(简体)
在Javascript中运行的金融计算器比在Excel中运行要慢得多。
原标题:
  • 时间:2009-01-12 18:24:32
  •  标签:

我将一个Excel退休计算器移植到了Javascript上。原始的Excel中有35个工作表,包含许多递归计算,我已将它们全部转换为Javascript。与Excel的瞬间响应相比,Javascript的运行速度较慢(需要1-2秒)。

我已经对递归计算进行缓存,以加快速度并防止浏览器堆栈溢出。

Is it realistic to try and make the the Javascript faster? How does Excel manage to be so efficient?

我在某处读到Excel仅在更改一个单元格的前置单元格时才重新计算。但即便如此,无论需要重新计算多少数据,Excel似乎都几乎是瞬间完成的。

问题回答

Excel 更快是因为它离 CPU 更近几层 -- 在操作系统内运行编译后的字节码,而不是在运行解释 JavaScript 的浏览器内。

我会将表现与拥有新一代 JavaScript 引擎的 Google Chrome 或 FF3 进行比较,并看看事情如何得到改善。请参阅 John Resig 的帖子:http://ejohn.org/blog/javascript-performance-rundown/

JavaScript 比任何编译语言都慢,这就是为什么Excel要快得多。我会使用Firebug的性能分析器来找出您的代码花费时间最长的地方,并专注于改进它。

如果您将Excel公式移植到JavaScript中并保持算法完整,那么您最终得到的JavaScript代码可能不是最理想的JavaScript代码。您是否考虑过重构代码以利用JavaScript强大的语言特性?

你在做计算的同时渲染内容吗(更新表格单元格等)?请记住,一些DHTML更新可能会给浏览器带来很大的负担(嘿,你是在浏览器中运行这个,对吧?)也许分离计算和渲染会有所帮助。你可以先忙于做所有的计算,然后在最后一步进行展示。

就像其他人说的一样,JavaScript远不及编译语言快。目前,Chrome、Firefox和Webkit的JavaScript解释器之间似乎存在一种军备竞赛,这真的改善了JavaScript的速度情况。但是,它仍然相当慢,如果您使用IE7(甚至更糟的是IE6),性能可能相当糟糕。

您可能想要查看一些JavaScript库(个人偏爱jQuery),看看它们是否具有您可以利用的实用程序函数。一些使用较多的JavaScript库可能已经针对你正在尝试完成的一些工作进行了优化。这肯定不能使JavaScript像Excel一样快,但如果您能用已经被许多不同的人优化的实用程序替换掉许多功能,您可能会看到一点速度提升。





相关问题
热门标签