共计 1718 个字符,预计需要花费 5 分钟才能阅读完成。
CPU 探查器选项卡
CPU 探查器选项卡提供了估计的 CPU 使用率的更详细细分。项目必须连续运行,探查器才能收集和显示信息。然后,它显示项目逻辑的每个部分所花费的估计 CPU 时间的明细。它每秒更新一次,显示的值仅适用于前一秒。
显示一些结果的 CPU 探查器选项卡
必须注意的是,总体 CPU 使用率首先是一个估计值,因此所有其他值也是估计值。探查器中显示的详细信息仅与主 JavaScript 线程相关,并且 CPU 可能忙于其他任务,例如处理音频或运行寻路计算。此外,分析器根本不考虑 GPU 渲染项目的时间(而是在 GPU 分析器选项卡中介绍)。
CPU 测量可能不可靠
尤其是在系统基本空闲时。大多数现代设备在没有满载的情况下故意减慢 CPU 速度以节省电量。这意味着工作需要更长的时间才能完成,并且这些测量结果会误导性地返回更高的测量值,因为它是基于工作所需时间的时间。它通常仅在设备的最大性能模式下(即满载)下才可靠。
尽管有上述注意事项,但分析器仍可用于识别“热点”,如果出现性能问题,这些热点是首先尝试优化的良好候选者。有关更多性能建议,请参阅性能提示。请注意,优化通常不是必需的,如果项目已经运行得足够快,则浪费时间。有关该主题的更深入讨论,请参阅博客文章优化:不要浪费时间。
探查器故障
探查器显示一个表,该表标识了引擎的每个部分(精确到单个事件组)所花费的 CPU 时间。它既显示自我时间,即仅在该项目上花费的时间,也显示总时间,即自我时间加上任何子项目的时间。总时间主要适用于事件,因为它显示了在该项目及其所有子项目上花费了多少时间。例如,事件组的自时间是处理组(不包括任何子组)所花费的时间,其总时间是处理组(包括任何子组)所花费的时间。默认情况下,表格的排序显示顶部的最高自我时间,这通常是确定需要优化的内容的最佳方式。但是,您可以单击表标题以按总时间排序。
顶级项目包括:
- 事件:在布局使用的事件表中运行事件逻辑所花费的时间的明细。这首先被分解到每个事件表中(如果使用了包含),然后进一步细分到事件的组和嵌套组。这有助于确定可能需要优化的 CPU 占用量最大的事件。注意:此类别包括在事件中运行脚本所花费的时间。
- 触发器:某些触发器(如鼠标单击时)在每次刻度发生的正常事件处理之外运行。这些不在“事件”部分中,因此包含在此项目下。注意:此类别包括在触发事件中运行脚本所花费的时间。
- 脚本:在项目中运行脚本所花费的时间。这仅涵盖脚本文件 – 事件中的脚本在“事件”和“触发器”类别下进行测量。注意:只能计算引擎同步事件回调所花费的时间。Construct 无法明确地将运行脚本所花费的其他时间归因于此类别,例如异步代码或 Construct 引擎外部的回调。例如,此处对事件中同步运行的代码进行计数。但是,在
await setTimeout
之后或回调中的代码不会归因于此类别,因为 Construct 无法归因于在这些情况下运行脚本所花费的时间。它要么被计入引擎 / 其他类别,要么可能根本不被 CPU 分析器计算在内。如果您大量使用此类代码,请改用浏览器开发人员工具中的探查器。 - 插件处理:在引擎中更新插件所花费的时间。许多插件需要少量的工作来更新它们,例如让 Sprite 推进动画。如果存在大量实例,则此工作量可能会变得很大。
- 行为处理:在引擎中更新行为所花费的时间。许多行为需要在每次滴答时进行一些工作来处理运动、碰撞等。如果存在大量实例,则此工作量可能会变得很大。
- 物理模拟:处理物理行为所花费的时间。物理模拟可能非常占用 CPU。如果此值较高,请考虑使用较少的物理对象。请注意,由于物理是一种行为,因此这是行为处理的子项。
- 绘制调用:CPU 发出渲染调用所花费的时间,不包括 GPU 完成渲染调用的时间。在某些情况下,渲染调用可能会占用大量 CPU, 尤其是当屏幕上有大量对象时。某些浏览器还会将所有绘制调用转发到另一个线程以并行处理,在这种情况下,绘制调用测量值可能会被低估。
- 引擎 / 其他:在 Construct 的运行时引擎中花费的剩余时间,这是减去事件、脚本、插件 / 行为处理和绘制调用时间后的总估计 CPU。这涵盖了一般的运行时开销。它有时还包括在项目中运行脚本所花费的时间 – 有关更多详细信息,请参阅脚本类别说明。