【发布时间】:2012-04-30 12:31:51
【问题描述】:
在过去的几个月里,我一直在构建一个原型页面,它使用了大量的 SVG,并且通常包含很多元素。在 JavaScript 和服务器端(大量 AJAX)中还处理了大量数据。页面上有数千个事件监听器。很重,这才是重点。
在 JS 中执行此类操作的最大障碍之一是单线程,当我必须执行 10 秒的计算时,它会锁定页面。有一些策略可以解决这个问题,但在 IE 支持 Web Workers 之前,并没有什么优雅的解决方案。此外,该页面可以使用超过 500MB 的内存,Chrome 似乎有时会遇到这种情况。
我想知道的是在 JavaScript 中构建这样的东西的可行性。我的代码远未优化,但让我们假设这个页面现在处理的负载是它所需要的——或者假设它需要更多。
我们还假设用户需要至少有一个中档桌面才能使用该应用程序。
人们是否如此努力地推动 JavaScript?就内存和 CPU 性能而言,它可以处理的内容有哪些限制?客户端和服务器端应该做多少?
编辑:我想每个人都会误解这个问题是不可避免的。我不是在寻求关于如何优化 JS 代码的建议。我在问在客户端处理多少处理和数据是合理的。是的,这取决于硬件,我试图通过说具有最新浏览器的中端桌面来回答,但实际上这不是重点。我想从概念上了解 JavaScript 在处理繁重的处理方面有多强大。在 JavaScript 中进行繁重的处理是否可行?
我希望每个人现在都能得到它。这是服务器端与客户端的比率。如果我必须运行具有 1000000 次迭代的循环,并且假设在 JS 中进行 X 迭代和在服务器上进行 Y 迭代之间进行选择没有成本,期望 JavaScript 处理多少是合理的?
【问题讨论】:
-
如果一个页面使用500MB内存,则需要重新开始
-
人们总是将 javascript 推向它的“极限”,几乎总是通过低效的代码。根据您自己的描述,您应该做的第一件事是尝试优化正在发生的事情。您可能会发现单个更改可能会释放数千个锁定 DOM 调用或其他内容,但如果没有深入分析,就无法真正说出您的情况发生了什么。
-
响应内存注释,它是可变的。一个 SVG 模块是几何查看器。所以更多的几何=更多的内存,我想知道的是你需要开始进行计算几何类型优化的点。如果 500MB 太高,那么合理的最高数量是多少?
-
@Ibu - “重新开始”是一种严重的夸大其词。将几十个尺寸不正确的图片放到一个页面上会占用 500MB。
-
这似乎不像 SO Q&A 格式所期望的那样真正有特定答案的问题。像这样的概念性问题可能属于programmers.stackexchange.com/about