Performance Javascript、IE、字符串和性能问题

Performance Javascript、IE、字符串和性能问题,performance,mootools,javascript,Performance,Mootools,Javascript,所以我们有这个产品,它在IE中的速度非常慢。 我们已经应用了很多IE人员自己建议的实践(、和),并尝试牺牲干净的代码来提高关键部分(如DOM操作)的性能 然而,正如你在IE profiler屏幕截图中看到的。。 只是“绳子”才是最大的罪魁祸首。几乎750ms的独占时间 这是否意味着IE花费750ms来实例化字符串?我也在网上读到了这些东西: 构建脚本可以删除空白, 注释,将字符串替换为数组 查找(以避免MSIE创建 每一个字符串的字符串对象 字符串的实例-即使在 条件) 但是没有更多关于这个的

所以我们有这个产品,它在IE中的速度非常慢。 我们已经应用了很多IE人员自己建议的实践(、和),并尝试牺牲干净的代码来提高关键部分(如DOM操作)的性能

然而,正如你在IE profiler屏幕截图中看到的。。

只是“绳子”才是最大的罪魁祸首。几乎750ms的独占时间

这是否意味着IE花费750ms来实例化字符串?我也在网上读到了这些东西:

构建脚本可以删除空白, 注释,将字符串替换为数组 查找(以避免MSIE创建 每一个字符串的字符串对象 字符串的实例-即使在 条件)

但是没有更多关于这个的信息。谁能澄清?似乎IE每次在代码中有“”时都必须创建一个完整的字符串实例,这可以解释这一点,但我不知道数组查找优化会是什么样子。 顺便说一句,我们并没有在代码中的任何地方进行太多的字符串连接

我们使用的库是MooTools 1.2.4

如有任何建议,将不胜感激!Thx

更新-我对上面提到的关于“数组查找优化”的技巧特别感兴趣。我们的库很大(1MB),所以它有很多字符串,就像其他JS代码一样。但由于我们的库比大多数库都大,这些字符串实际上导致了速度问题


还有,有人知道向String.prototype添加东西是否会使每个实例都变慢吗?

我会用一个分析器,让您更深入地了解,您可以确切地看到String花了这么长时间。特别是IE有(是的,它是免费的)


我会在那里打开你的相同页面,它会给你一个树分解,这样你就可以看到发生了什么…同时还有一个热点视图,确切地说,哪些低级函数花费的时间最长。

字符串在Javascript中是不可变的。意思是当你做这样的事情时:

alert("hello" + " world");
正在创建三个字符串:

  • 你好
  • 你好,世界

  • 找到这样的实例并修复它们可能会有所帮助。正如Nick所说,使用探查器准确地确定哪些带字符串的特定代码造成了问题可能是最好的方法。

    是否也可以有一个调用树评测视图?Seconded-dynaTrace非常棒,几乎是怪异dynaTrace看起来非常棒,但我们的产品在运行时无法工作。没有错误或任何东西,它就是不起作用。烂透了。但是我已经知道哪个低级函数导致了大部分性能问题,它是
    String
    。所以我想问的是,是否有人知道如何优化strings@Infinity-非常奇怪,可能想问问dynaTrace的人,他们很擅长修理东西。您知道的是字符串导致了错误…dynaTrace将告诉您的是调用它2000次的函数,以及调用它的函数,等等…这通常是问题所在。根据我的经验,获得一个调用树而不是每个函数的点击次数是非常有用的,我真的希望你能让它运行起来……这是IE世界中无与伦比的JS调试工具。代码中没有任何特定部分对字符串做了疯狂的处理,大多数库的源代码中都有数千个字符串,但是如果你有一个1MB的库,那么这些就成了问题。我对Opera开发者在他们的博客中提到的技巧特别感兴趣