Internet Explorer 启动性能评估结果

Internet Explorer 启动性能评估可以帮助你评估在创建新 Internet Explorer 窗口期间执行的活动。 该评估测量了在桌面上完全呈现一个新的 Internet Explorer 窗口所需的时间,该窗口具有单个标签页和简单的内容。 此测量包括 IExplore.exe 进程的加载时间以及框架创建和标签页创建间隔。

该评估还测量在启动期间加载和初始化的扩展的性能。 有几种类型的扩展,包括快捷菜单、工具栏、资源管理器栏和浏览器帮助对象 (BHO)。 若要查看计算机上安装的扩展类型,请在 Internet Explorer 的“管理加载项”对话框中,右键单击列标题,选择“列”,然后选择“类型”。

本主题可以帮助你理解 Internet Explorer 启动性能评估产生的结果。 本主题还提供了以下方面的指导:如何使用结果来识别和解决在启动 Internet Explorer 时对你的体验产生负面影响的常见问题。

本主题内容:

有关系统要求和评估设置的更多信息,请参阅 Internet Explorer 启动性能

目标文件

可以在结果视图中创建自定义目标来衡量改进。 目标文件是一种分类工具,有助于了解电脑的性能并比较企业中的电脑。

例如,基本款笔记本电脑的目标可能与为高端台式计算机设定的目标不同,或者市场预期可能会发生变化,而您希望随着时间的推移和技术的进步灵活地定义不同的目标和关键要求。

将某个度量值与该度量的目标进行比较时,状态在结果视图中以颜色编码,如下所示:

  • 浅紫色表示该系统的用户体验出色,并且没有已知的问题。

  • 淡紫色表示用户体验尚可,并且可以优化系统。 查看建议和分析,了解可以对系统进行哪些改进。 这些更改可能是软件更改、配置更改或硬件更改。

  • 深紫色表示该系统的用户体验较差,并且还有很大的改进空间。 查看建议和分析,了解可以对系统进行哪些改进。 这些更改可能是软件更改、配置更改或硬件更改。 您可能必须考虑进行权衡,以提供高质量的 Windows 体验。

  • 无颜色表示没有为度量值定义目标。

注意 在适用于 Windows 8 的 Windows 评估工具包中,某些评估包括默认目标文件。 第一次使用此版本的工具查看结果时,将使用默认目标文件。 但是,也可以按照与 Windows 8.1 和 Windows 10 相同的方式为 Windows 8 定义自定义目标。

可以设置目标文件位置并将目标文件添加到该位置,然后才能使用 UI 应用自定义目标。 选择目标文件后,它将继续作为目标文件,用于任何打开的结果。

一次只能使用一个目标文件。 所有评估的目标都在单个目标文件中设置。 评估工具将按以下顺序搜索目标:

  1. 自定义目标文件

  2. 结果文件中定义的目标

  3. 评估清单中定义的目标

可以使用 %PROGRAMFILES%\Windows Kits\10\Assessment and Deployment Kit\Windows Assessment Toolkit\SDK\Samples\Goals 中提供的示例目标文件来创建自己的目标文件。

注意 不能将目标文件打包为作业,但可以将它存储在共享中供其他人使用。

指标

本节介绍 Internet Explorer 启动评估报告的指标、每个指标结果不佳的常见原因以及这些问题的可能补救措施。 这些指标与 Internet Explorer 启动的阶段一致。 Internet Explorer 启动有六个阶段:进程创建、框架创建、标签页创建、扩展创建 (CoCreateInstance)、扩展初始化(设置站点)和显示停靠窗口(对于某些扩展类型)。 此处介绍了相应的指标。

注意:顶级 IE 启动持续时间指标非常全面,包括在创建进程、框架和标签页之后运行的任务。

注意:如果你启用了“启用微筛选器诊断模式”设置,评估结果将包括微筛选器指标。 有关微筛选器指标和结果的更多信息,请参阅微筛选器诊断

创建 Internet Explorer 进程

最适用于:设备制造商、反恶意软件供应商

该指标衡量创建 Internet Explorer 进程所需的时间。 这包括从操作系统开始加载和执行 iexplorer.exe 到 Internet Explorer 发出信号表明它已开始初始化的 Create Frame 阶段的时间间隔。 或者,从 iexplorer.exe 启动(由 Windows 内核报告)到 Create Frame 阶段开始(由 Internet Explorer 报告)的时间间隔。

典型影响因素

  • CPU 速度

  • 反恶意软件

分析和修正步骤

如果评估始终报告此阶段耗时过长,则建议在 WPA 中进行深入分析以找出根本原因。

Internet Explorer 框架创建

最适用于:设备制造商、反恶意软件供应商、视频驱动程序开发者

此指标测量在 Internet Explorer 中完全呈现窗口框架所需的时间,包括从启动到 Internet Explorer 创建第一个标签页之前以及加载或初始化任何扩展(包括创建顶级窗口(框架)和在该窗口中初始化 Direct3D 呈现的时间间隔。 Internet Explorer 框架是单个顶级 Internet Explorer 窗口中标签页的父进程和 UI 容器。 标签页托管在单独的进程中,但父进程负责发出用于评估分析的跟踪事件。

典型影响因素

  • CPU 速度

  • 反恶意软件

  • 视频驱动程序

分析和修正步骤

如果评估始终报告“Internet Explorer 框架创建”的持续时间过长,请按照 WPA 进一步分析链接查看高级详细信息并找到根本原因。

Internet Explorer 标签页创建

最适用于:设备制造商、反恶意软件供应商

该指标衡量在 Internet Explorer 中创建新标签页所需的时间,包括在框架中创建和初始化标签页的时间间隔,以及创建和初始化其所有扩展的时间间隔。 选项卡是单个选项卡及其内容的流程和 UI 容器。 应始终至少有一个标签页,尽管多个标签页可以托管在同一个进程中。 在标签页的进程中创建和初始化扩展。

典型影响因素

  • CPU 速度

  • 反恶意软件

  • 扩展

分析和修正步骤

对于扩展性能的分析,我们建议你关注各种扩展相关的指标,例如创建和设置站点。 但是,如果此阶段一直被报告为耗时过长,但没有标记单个扩展的性能,请按照 WPA 进一步分析链接查看高级详细信息并找到根本原因。

创建扩展加载项计数

最适用于:设备制造商、反恶意软件供应商

该指标枚举了 CreateExtension 操作中涉及的 Internet Explorer 加载项。 你可以展开此指标以查看每个扩展及其相应持续时间的列表。 对于每一个扩展,都会测量使用 CoCreateInstance() 实例化扩展所花费的时间。 这还包括加载扩展的 DLL 及其任何静态 DLL 依赖项的时间。 当 Internet Explorer 初始化加载项时,它首先使用加载项的 CLSID 调用 CoCreateInstance() 函数,然后调用加载项模块的 DllGetClassObject() 函数在内存中创建一个对象。 加载项在此函数调用期间通常不会导致性能延迟。 但是,在优化启动性能的同时关注此函数调用很重要,因为性能缓慢可能与加载项有关。

典型影响因素

  • CPU 速度

  • DLL 依赖项

  • 同步或阻塞 I/O 操作(磁盘或网络)

  • 反恶意软件

分析和修正步骤

在此阶段,扩展应该不会做很多事情,因此在这里花费的任何不寻常的时间量都可能表明存在问题。 对于设备制造商,你可能需要卸载该扩展。 对于扩展的作者,除了对扩展代码的以下区域进行代码审查外,还建议在 WPA 中进行深入分析:

  • DllMain:在此阶段,DllMain 方法花费大量时间的情况并不常见。

  • DllGetClassObject:DllGetClassObject 方法在此阶段花费大量时间并不常见。

  • 类构造函数 (C++)(或等效项):扩展在创建期间不应执行太多操作,其中包括正在构造的类的构造函数(由 CLSID 标识的类)。

  • 静态 DLL 依赖项:这些 DDL 在从扩展 DLL 至少有一个静态导入需求。 在 Windows 从 Internet Explorer 发出的 LoadLibrary() 调用返回之前,必须加载和解析这些 DDL,无论它们是否实际使用。

    这并不包括使用 /DELAYLOAD 或 LoadLibrary() 延迟加载的 DLL。

    如果只是偶尔使用某个特定 DLL,或者在启动或初始化期间未使用,请考虑使用 /DELAYLOAD。

  • 动态 DLL 依赖项:如果扩展调用 LoadLibrary() API,或调用 /DELAYLOAD 列表中的 DLL,则应审查该使用情况以确定是否可以推迟到以后使用。 如果 DLL 已延迟加载,但始终在启动或初始化期间使用,请考虑将其从 /DELAYLOAD 列表中删除。

    注意:不应对调用的任何 Windows API 执行此操作,具体取决于正在运行的Windows版本;应始终延迟加载。 例如,如果扩展使用 DirectWrite 进行文本呈现并使用 GDI 作为回退,则它不应静态链接到 dwrite.dll。 这样做可以完全阻止它在早期版本的 Windows 上加载。

其他信息

MSDN:/DELAYLOAD(延迟加载导入)

设置扩展的站点

最适用于:扩展作者、设备制造商

此衡量指标枚举 SetSite 操作中涉及的 Internet Explorer 加载项。 你可以展开此指标以查看每个扩展及其相应持续时间的列表。 对于每一个加载项,都将测量 Internet Explorer 调用扩展的 IObjectWithSite::SetSite() 方法所花费的时间。 此方法建立扩展与 Internet Explorer 通信的能力。 扩展通常在此处执行大部分启动/初始化。 这将建立加载项与 Internet Explorer 的初始通信,并由 IObjectWithSite 接口公开,所有 Internet Explorer加载项都必须实现该接口。 加载项通常在此功能中运行其初始化例程,例如显示工具栏 UI 或加载其他模块。

典型影响因素

这通常只会受到扩展的 IObjectWithSite::SetSite() 实现的影响。 在此方法中,请务必尽可能避免同步/阻塞磁盘或网络 I/O。

分析和修正步骤

对于设备制造商,你可能需要卸载该扩展。 对于扩展作者,除了对 IObjectWithSite::SetSite() 实现进行代码审查外,还建议使用 WPA 进行深入分析。 此代码的某些部分可以推迟到以后的时间,或者可能是异步执行的,以便它们可以与其他插件的初始化并行运行。

其他信息

MSDN:IObjectWithSite Interface

扩展工具栏显示停靠窗口

最适用于:扩展作者(仅限工具栏和资源管理器栏)、设备制造商

此指标枚举显示单独工具栏的 Internet Explorer 加载项。 你可以展开此指标以查看每个扩展及其相应持续时间的列表。 对于这些中的每一个,都会测量在 IDockingWindow::ShowDW() 实现中花费的时间间隔。 如果正在初始化的加载项是工具栏或资源管理器栏,则 Internet Explorer 会调用加载项的 IDockingWindow::ShowDW() 函数以使加载项在浏览器窗口中可见。 一些加载项选择在此函数中运行它们的 UI 呈现代码,因此它也会影响启动性能。

典型影响因素

  • CPU 速度

  • 显示或初始化 UI 的复杂性

分析和修正步骤

对于设备制造商,你可能需要卸载该加载项。 对于扩展作者,除了对 IDockingWindow::ShowDW() 实现进行代码审查外,还建议使用 WPA 进行深入分析。

如果扩展程序正在运行 UI 呈现代码,例如 WM_PAINT,则可以将其推迟到以后,具体取决于扩展的编写方式。 如果在此阶段避免呈现代码 (WM_PAINT) 完全无法做到或者不切实际,你可以尝试使用以下策略或类似的策略来延迟呈现。

  1. 在为扩展的 UI 创建并显示主 HWND 之后,但在向其添加任何子窗口之前,使用 SendMessage 向其发送 WM_SETREDRAW 消息,其中 wParam 等于 FALSE。

    警告 这将暂时禁用窗口的所有绘画。 这应该小心使用;如果使用不当,可能会导致难以调试的问题。

  2. 接下来,创建并添加子窗口或内容。

  3. 向窗口发送另一个 wParam 等于 TRUE 的 WM_SETREDRAW 消息。

  4. 使用 InvalidateRect 或 RedrawWindow 重绘窗口。

  5. 从 IDockingWindow::ShowDW() 返回。

其他信息

MSDN:IDockingWindow::ShowDW method

MSDN:WM_SETREDRAW 消息

问题

Internet Explorer 启动性能评估执行高级问题分析并提供指向 Windows® 性能分析器 (WPA) 的链接以解决已识别的问题。 当 WPA 打开时,可能会提供有关磁盘活动或 CPU 活动的其他详细信息,具体取决于识别的问题类型。 有关深入分析问题和建议的更多信息,请参阅常见的深入分析问题

评估报告退出代码 0x80050006

当维护任务已在电脑上注册但在评估运行之前尚未完成时,会发生此错误。 这会阻止评估运行,因为维护任务通常会影响评估指标。

若要解决此问题,请执行以下操作之一:

  1. 请确保计算机已连接到网络并使用交流电源运行。 在权限提升的提示符下使用以下命令,手动启动挂起的维护任务:

    rundll32.exe advapi32.dll,ProcessIdleTasks

  2. 在运行评估之前,请禁用常规和空闲维护任务,并停止所有维护任务。

Internet Explorer 启动性能

评估

开/关转换性能