【发布时间】:2014-10-11 06:51:08
【问题描述】:
最近在处理算法问题时,我发现了一个像这样的普通大 for 循环
var x = 1000000000000;
for (var i = 0; i <= x; i++) {}
可以挂起 javascript 引擎(在 node.js、Chrome 和 Firefox javascript 控制台上测试)。
实际上它正在运行,但是很慢。我尝试了几个x的值,当x = 1000000时有明显的延迟。
这种性能对于解释语言来说是正常的吗?
【问题讨论】:
-
在 Node.js 中运行良好。不挂。
-
当循环进行如此大量的迭代时,无论您使用什么语言,系统都肯定会挂起。但是,大多数解释器甚至都不会尝试运行您的循环,因为在循环之后从未使用过
i,并且循环什么也不做。 -
您预计会发生什么?浏览器不执行抢先式多任务处理。引擎不是“挂”,而是“思考”。
-
谢谢你们,现在我对循环有了一些了解——对于任何语言来说,这都是一项非常耗时的任务。
标签: javascript node.js google-chrome firefox for-loop