7

我正在尝试复制客户端报告的错误,它是 IE 中出现的“此脚本运行缓慢”通知,因为它的 JS/DOM 解析速度极慢。

这不会发生在我的 virtualbox IE6(客户端有 IE6)上,也不会在我有的测试机器(一些 mac mini)上工作。

我可以保证有很多 JS 发生,并且在使用 XHR 检索后有很多 HTML 正在处理,此外还有很多 JS 在之后对附加的 DOM 元素进行操作。我不可能发布整个脚本,但我相信我可以轻松追踪问题,但我想重现它以优化它。

这是一个非常知名的客户,所以我不能只是通过电话或即时消息与他们交谈。有什么方法可以减慢机器速度以重现此错误?还是我应该坚持询问客户的计算机规格并尝试访问更可能重现问题的旧计算机?甚至使用browsercam之类的东西?

我想到的另一个想法是让 JS 运行得更多,以便我确实遇到问题并尝试优化我的代码,这样即使使用我的附加代码它也不会发布脚本通知错误。

我会很感激任何建议。

4

3 回答 3

5

在虚拟机内运行,并故意降低内存以进行过多的交换。如果这仍然不起作用,您可以在后台运行一些基准测试软件,这些软件往往会消耗大量 CPU。

于 2010-09-10T16:48:26.517 回答
4

很多事情可以做来降低你的电脑速度。这里真正的问题是您是否希望它精确,或者只是咀嚼足够的 CPU 周期以使 IE6 更频繁地重现此问题。

从粗略和简单的方法开始:使用虚拟机,只给它一个 CPU,然后运行 ​​CPU 使用率高的东西,比如播放电影。尝试使用不会占用太多 RAM 的东西,因为强制 IE 进入页面文件对您没有帮助。为了获得更精确的减速效果,您可能希望降低 CPU 的频率,尽管这样做是为了调试 Javascript 有点极端。访问旧计算机也可以解决问题,尽管这些都不能保证会重现问题。

使用屏幕共享软件也可能很困难——这取决于客户安装和设置此类软件的意愿,但这绝对有助于重现错误。在用完客户端计算机的时间时不得不玩弄它可能是不可接受的。

除了降低计算机速度之外,您还可以尝试其他方法。根据这篇Microsoft 支持文章,您实际上可以通过更改一些注册表值来手动降低 IE 慢速脚本警告的时间限制。尝试在自己的机器上对 Javascript 进行深度剖析,即使您无法生成慢速脚本错误,您仍然可以找到脚本执行不佳的瓶颈或地方。

于 2010-09-10T17:15:13.153 回答
1

我发现了你的问题:
This is a really high profile client so I can't just get on the phone or IM and speak to them.- 如果他们想要修复它,这是你想要修复的东西。


否则,如果您对问题有所了解,您可以:

  • 使用随机信息创建 XML/HTML 文档并将其存储在字符串中
  • 然后尝试使用 XMLDom 或其他东西解析它

你应该尝试用一百万行来做:

sXML     = "<?xml version="1.0" encoding="UTF-8"?>\n<rootElement>\n";
for (var i=0;i<1000000;i++){
   sXML += '<element name="' + Math.floor(Math.random()*10001) + '">' 
         +    'some more random text: ' + Math.floor(Math.random()*1001) 
         + "</element>\n";
}
sXML     = "</rootElement>";

var oXML = (new DOMParser()).parseFromString(sXML, "text/xml");
var root = oXML.documentElement;

当然,您可以使用随机元素等将其制作得尽可能精细。

于 2010-09-10T18:01:19.483 回答