跳到主要内容
版本:1.21 - 1.21.1

调试分析器

Minecraft 提供了一个调试分析器,它提供系统数据、当前游戏设置、 JVM 数据、关卡数据和侧面刻度信息,以查找耗时的代码。考虑到像 TickEvents 和勾选 BlockEntities 这样的东西,这对于想要找到滞后源的 Mod 开发者和服务器所有者来说非常有用。

使用调试分析器

调试分析器使用起来非常简单。它需要调试键绑定 F3 + L 来启动分析器。 10秒后自动停止;但是,可以通过再次按下按键绑定来提前停止它。

备注

当然,你只能分析实际到达的代码路径。你要分析的 EntitiesBlockEntities 必须存在于关卡中才能显示在结果中。

停止调试器后,它将在运行目录的 debug/profiling 子目录中创建一个新的 zip。 文件名的日期和时间格式为 yyyy-mm-dd_hh_mi_ss-WorldName-VersionNumber.zip

读取分析结果

在每个侧面文件夹(clientserver)中,你将找到包含结果数据的 profiling.txt 文件。在顶部,它首先告诉你它运行了多长时间(以毫秒为单位)以及在这段时间内运行了多少个滴答声。

在其下方,你将找到类似于以下代码片段的信息:

[00] levels - 96.70%/96.70%
[01] | Level Name - 99.76%/96.47%
[02] | | tick - 99.31%/95.81%
[03] | | | entities - 47.72%/45.72%
[04] | | | | regular - 98.32%/44.95%
[04] | | | | blockEntities - 0.90%/0.41%
[05] | | | | | unspecified - 64.26%/0.26%
[05] | | | | | minecraft:furnace - 33.35%/0.14%
[05] | | | | | minecraft:chest - 2.39%/0.01%

以下是每个部分含义的简短解释:

[02]勾选99.31%95.81%
本节的深度部门名称相对于其父级所花费的时间百分比。对于第 0 层,它是一个刻度所花费的时间的百分比。对于第 1 层,它是其父层所用时间的百分比。第二个百分比告诉你整个滴答花费了多少时间。

分析你自己的代码

调试分析器对 EntityBlockEntity 具有基本支持。如果你想分析其他内容,你可能需要手动创建你的部分,如下所示:

ProfilerFiller#push(yourSectionName : String);
//The code you want to profile
ProfilerFiller#pop();

你可以从 LevelMinecraftServerMinecraft 实例获取 ProfilerFiller 实例。 现在你只需在结果文件中搜索你的部分名称即可。