我在Stack Overflow上发现了一些关于内存使用和CPU使用的有趣帖子,但是他们都没有直接解决这个看似简单的问题:
作为JavaScript应用程序中的通用策略,使用内存(存储数据)或CPU(每次重新计算数据)的性能是否更好?
我指的是常见浏览器环境中的javascript使用情况(FF,Chrome,IE> 8)
是否有人对此有更直接和记录的答案?
---编辑---
好的,我明白这个问题非常通用。我试着减少“范围”。
阅读你的答案我意识到真正的问题是:“如何解读我的javascript代码仍然具有良好性能的内存限制?”。 环境:常见浏览器环境(FF,Chrome,IE> 8)
我使用的函数不是非常复杂的数学函数,但可以生成相当大量的数据(300-400kb),我想了解每次重新计算它们是否更好或只是将结果存储在变量中。
答案 0 :(得分:3)
模糊相关 - 当你开始使用大型对象/数组时,浏览器中的JS会非常耗费内存。如果您考虑由canvas元素或其他富媒体API生成的二进制数据,那么显然您不希望以传统方式存储这些数据 - 忽略性能问题,这也很重要。
来自MDN article talking about JS Typed Arrays:
随着Web应用程序变得越来越强大,添加音频和视频操作等功能,使用WebSockets访问原始数据等等,很明显有时JavaScript代码会有所帮助能够快速轻松地操作原始二进制数据。
这是JS Perf comparison of arrays和另一个looking at canvas in particular,因此您可以直接了解它们的工作原理。希望这很有用。
答案 1 :(得分:1)
这只是尺寸/性能权衡的另一种变化。存储值会增加大小,重新计算会降低性能。
在某些情况下,计算很复杂,内存使用量很小。对于数学函数尤其如此。
在其他情况下,所需的内存量很大,计算也很简单。当输出是大型数据结构时,尤其如此,您可以轻松地计算结构中的元素。
您需要考虑的其他因素是可用的资源。如果你的内存非常有限,那么你可能别无选择,如果它是后台进程,那么可能使用大量内存是不可取的。如果计算需要经常进行,那么你比每个月做一次更有可能存储价值......
在权衡中存在很多因素,因此没有“通用”答案,只有在每种情况出现时都可以遵循的一套指导原则。