gpt4 book ai didi

javascript - 在启用开发人员工具之前,IE11 中的 javascript 执行缓慢

转载 作者:可可西里 更新时间:2023-11-01 02:24:46 25 4
gpt4 key购买 nike

我有一个非常大的 javascript 应用程序,其中主要包含 asm.js 代码(它建立在 urho3d c++ 引擎之上,它们被编译成 asm.js)。

它在大多数浏览器(chrome、firefox、safari、edge)上运行良好,但在 IE11 上运行速度极慢。问题是,在您打开开发人员工具之前,它只会很慢。打开开发人员工具后,IE11 的速度提高了约 10 倍,几乎与其他浏览器一样快。

这是一个重现问题的最小示例:
http://test.sebbia.com/urho3d/test.html
在任何工作的浏览器中打开页面,“运行 - 开始” 消息和“运行 - 完成” 消息之间的时间应在 1-2 秒左右。
在没有开发者工具的情况下在IE11中打开页面,时间应该在35-50秒左右。
打开开发者工具并重新加载,时间应该在 2-3 秒左右。

另一个重要的注意事项是,如果我在开发人员工具中开始分析 session ,性能会下降,就像关闭开发人员工具一样。所以我实际上可以描述这个问题。但我花了几个小时进行分析,并尝试在大函数中插入日志消息,但我没有发现任何瓶颈。所有函数的执行时间大致相同,如果我在一个大函数的中间插入日志消息,它们通常会分成两个相似的部分。所以没有一个函数会导致速度变慢,代码执行速度很慢。移位、函数调用、算术运算 - 与开放的开发人员工具相比,它们似乎都花费了太多时间。

我真的需要让我的应用程序在 IE11 上运行,而且它可以与打开的开发人员工具一起运行这一事实让我抓狂。我正在尝试找到一种方法,让 IE 认为工具即使在未打开时也是打开的,或者通过任何其他方式实现良好的性能。所以我的问题是如何在打开开发人员工具的情况下实现与 IE11 相同的性能,而无需实际手动打开工具

这是一个非常广泛的问题,所以我想把它分解成几个较小的问题:

  1. 有没有办法让 IE11 认为开发者工具是开放的?也许我缺少像 x-ua-compatible 元标记之类的东西?

  2. 关闭开发者工具时速度变慢的原因是什么?我听说 console.log 函数调用在 IE8 和 9 上没有开发者工具的情况下很慢,也许 IE11 上有类似的事情?也许 asm.js 没有优化?如果我知道是什么原因造成的,我至少可以尝试重写代码来避免这种情况。

  3. 有没有办法从 javascript 代码打开开发者工具?也许我可以让用户在网站上按下一个按钮来“让应用程序更快”。要求他们按 F12 或导航设置似乎太过分了。

最佳答案

当启用调试器时,asm.js 编译将被禁用,执行将回退到像普通 JS 一样执行 - 你可以看到 控制台。在执行开始时沿着这些行记录

asm.js 已被禁用,因为脚本调试器已连接。断开调试器以启用 asm.js。 在 Edge 中,

asm.js 类型错误:在 Firefox 中被调试器禁用

当您尝试打开调试器时,Chrome 不会在调试器中打开 01_HelloWorld.js

禁用 IE 中的调试器(调试器选项卡,套接字符号;从左数第八个),从而启用 asm.js 将允许您打开开发工具,但看到执行速度较慢。我有一种可怕的感觉,当调试器关闭时速度变慢实际上只是 IE11 的速度问题与 asm.js 的优化。

有很多关于 IE11 未针对 asm.js 优化的引用资料。 caniuse.com 甚至将 IE11 列为完全不支持 asm.js

https://caniuse.com/#feat=asmjs

这似乎是由 Microsoft 自己支持的:

https://developer.microsoft.com/en-us/microsoft-edge/platform/status/asmjs/

它肯定会得到一些支持,但显然它有许多速度问题,如许多基准测试所示,例如:

https://github.com/Kukunin/asm.js-benchmark/blob/master/README.md

显示 IE11 比其他浏览器慢 10 倍左右,或者:

https://www.ghacks.net/2014/11/03/massive-benchmark-highlights-asm-js-performance-of-web-browsers/

基于:

https://kripken.github.io/Massive/ - 你可以自己试试。

还有很多其他的。可能只是 asm.js 的 IE11 实现太差了,使用它比没有它要慢得多。

编辑:添加了 Microsoft 平台状态链接。

关于javascript - 在启用开发人员工具之前,IE11 中的 javascript 执行缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48580255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com