加载时间分析器

创作者: sighsorry
已更新:2026-07-14 00:04:06
200KB

关于此 MOD

启动与加入性能分析、可选加速、超时保护以及可重载日志过滤

加载时间分析器

精心调校的Valheim启动、世界加入和专用服务器引导配置。一个补丁DLL还提供可选的本地化缓存、配置写入合并、超时保护、日志过滤以及其他模组BepInEx cfg文件的自动重载。

功能

  • 开始测量进入大厅、大厅进入世界以及专用服务器启动的时间。
  • 显示插件构建, 苏醒, 启用时, 开始,以及主要生命周期时间节点。
  • 属性同步和谐回调时间 对象数据库.唤醒 和 ZNetScene.Awake 到各个模组。
  • 可选加速受支持的本地化工作以及自动写入 BepInEx 配置。
  • 对支持的 vanilla、Jotunn、ServerSync 和 AzuAntiCheat 路径应用可配置的超时下限。
  • 为每个模组提供四个基于GUID的日志勾选框,而无需检查每条消息的堆栈。
  • 自动重新加载日志设置,包括在没有玩家连接的无头服务器上。
  • 可选地在本地文件编辑后重载其他模组注册的BepInEx配置文件,无需游戏内管理员或ConfigManager。
  • 保留最新20份报告以供对比。

安装

放置 LoadTimeProfiler.dll 在:

BepInEx/补丁程序

不要将其放置在 BepInEx/plugins在每个想要进行性能分析的客户端或专用服务器上单独安装它。

超时保护是端点本地的。当你希望在两个方向上获得同等保护时,请在客户端和服务器上安装相同的构建和超时设置。

用途

  1. 正常启动英灵神殿。
  2. 等待主菜单测量从开始到大厅的时间。
  3. 进入世界时也会测量大厅到世界的距离。
  4. 打开最新报告于:
BepInEx/配置/加载时间分析器

专用服务器会创建一个 服务器启动 在同一目录中报告。比较多次预热运行的结果,因为磁盘缓存、网络状况、世界大小和后台程序都会影响加载时间。

大厅启动从该修补程序开始 补丁 回调,并在……时结束 菲德启动.开始 完成。它不包括整个可执行文件的启动过程或后续的所有渲染。早期的预加载器配置/手动日志设置不在该计时范围内;在比较总启动成本时,请使用外部的从启动到菜单的测量方式。

在《英灵神殿》1.0中,开场动画可以在此边界之后继续。开场动画的播放、跳过操作以及菜单接受输入所需的时间均不计入此测量范围;现有的计时边界保持不变。

大厅进入世界开始于 切换到主场景 接受世界过渡并结束时 生成玩家 完成。更早的登录、密码、权限、警告和世界选择提示未包含在内。

配置

配置文件为:

BepInEx/config/sighsorry.LoadTimeProfiler.cfg
设置 默认 用途
分析性能已启用 真 测量加载时间,生成计时报告并支持生命周期及按模组归因。
通用.本地化缓存已启用 真 缓存支持原版和外部本地化工作。
通用.配置写入合并启用 真 在以下期间合并自动配置写入 链式加载器.开始.
自动重载配置已启用 假 在本地文件编辑后,自动重新加载其他模组注册的BepInEx cfg文件。需要重启。
超时保护秒数 120 设置支持的最小连接和发送队列超时。使用 0 禁用它。
日志.模组.<GUID> 错误,警告 当缺席时 模组默认 BepInEx 日志记录器允许的组。

每个模组都有四个独立的复选框。没有日志总开关、通用记录器选项或来源名称覆盖。

复选框 配置名称 默认
致命+错误 错误 已勾选
警告 警告 已勾选
消息 + 信息 信息 未选中
调试 调试 未选中

未配置的模组在其默认日志器上保留致命/错误/警告消息并抑制消息/信息/调试。清除所有复选框(无 (在文件中)来静默该记录器;选择全部四项以允许所有事件,包括自定义关卡值。LoadTimeProfiler自身的诊断记录器和报告文件仍然可用。Unity日志以及无主/自定义/共享的Manual记录器始终会通过此过滤器。

示例(将示例GUID替换为实际的模组GUID):

[常规] 性能分析启用 = 是 本地化缓存启用 = 是 配置写入合并启用 = 是 配置自动重载启用 = 否 超时保护秒数 = 120 [日志.模组] sighsorry.ConfigManager = 错误, 警告 author.examplemod = 错误, 警告, 信息, 调试 author.noisymod = 无

兼容性

当安装了其中一个模组时,请禁用重叠的LoadTimeProfiler功能:

已安装的模组 加载时间分析器设置
平滑脑-启动加速器 本地化缓存启用 = false 和 配置写入合并已禁用 = false
MSchmoecker-本地化缓存 本地化缓存启用 = false
MSchmoecker-超时限制 超时保护秒数 = 0

LoadTimeProfiler不会检测上述三个加速/超时重叠项,也不会自动更改其设置。请编辑配置并重启。独立的QuietLogs/ShutUp检测可防止重叠的日志过滤;独立的ConfigWatcher检测可防止重叠的自动cfg监视器。每个冲突仅禁用其对应的LTP功能。

阅读报告

  • 总计 是完整的测量会话时间。
  • 里程碑间隔 显示主要加载事件之间经过的时间。
  • 插件构建/唤醒/启用时 和 插件启动方法 显示每个插件的启动工作。
  • 实测生命周期执行时间 显示包含的瓦尔海姆生命周期时长。
  • 限定深度归因 分配同步 对象数据库.唤醒 和 ZNetScene.Awake 对模组的回调。
  • 连接结果 将成功连接时间与失败判定时间分隔开。
  • 开始/结束时记录日志、钩子可用性和配置修订记录了测量条件。修订变更会警告配置在会话期间发生了更改,即使随后又改回也是如此。启动功能值在重启之前保持不变。

慢速条目是调查对象,并不自动证明模组已损坏。框架模组可能会代表其他模组执行工作。加速命中次数和内部补丁计时被有意省略,因为它们并不衡量端到端节省的时间。

示例报告

以下日志为节选示例,仅供参考。

开始至大厅

=== 进入大厅 === 结果:已完成 总计:2 分 15.781 秒 里程碑间隔: 细分:生命周期执行 + 距离下一里程碑的剩余时间。 0.714 秒:LoadTimeProfiler.Patcher.Patch 0.106 秒:LoadTimeProfiler.Patcher 已初始化 82.336 秒:BepInEx.Chainloader.Start 32.418 秒:BepInEx.Chainloader.Start 完成 16.894 秒(16.463 秒 + 0.431 秒):FejdStartup.Awake 0.000 秒:FejdStartup.Start 0.244 秒(0.244 秒 + 0.000 秒):FejdStartup.SetupGui 3.068 秒(2.771 秒 + 0.297 秒):FejdStartup.SetupObjectDB BepInEx 启动:Chainloader.Start 之前(包含 Chainloader.Initialize):820.046 毫秒 Chainloader.Start:1 分 22.336 秒 插件构造/Awake/OnEnable:6.534 秒:MonsterLabZ 4.629 秒:MonstrumDeepNorth 4.091 秒:WarfareFireAndIce 3.134 秒:SouthsilArmor 2.965 秒:Jewelcrafting 2.770 秒:CrystalLights 2.486 秒:Warfare 2.367 秒:ValheimCuisine

大厅至世界

=== 大厅到世界 === 结果:已完成 总计:52.154 秒 连接结果:正常 连接时间:52.154 秒 里程碑间隔:细分:生命周期执行时间 + 距离下一里程碑的剩余时间。 1.468 秒(0.000 秒 + 1.468 秒):FejdStartup.TransitionToMainScene 0.233 秒(0.000 秒 + 0.233 秒):FejdStartup.LoadMainScene 0.043 秒(0.043 秒 + 0.000 秒):Game.Awake 0.009 秒(0.008 秒 + 0.001 秒):ZoneSystem.Awake 2.262 秒(2.261 秒 + 0.001 秒):ZNet.Awake 15.022 秒(13.311 秒 + 1.711 秒):ZNetScene.Awake 8.769 秒(7.079 秒 + 1.690 秒):ObjectDB.Awake 0.033 秒(0.032 秒 + 0.001 秒):Game.Start 0.438 秒(0.437 秒 + 0.001 秒):ZoneSystem.Start 3.387 秒(3.387 秒 + 0.000 秒):DungeonDB.Start 4.285 秒(0.293 秒 + 3.992 秒):ZNet.Start 16.010 秒(0.301 秒 + 15.709 秒):Game.RequestRespawn 0.167 秒(0.167 秒 + 0.000 秒):Game.SpawnPlayer 实测生命周期执行时间(前缀 -> 终结器,含两端): 13.311 秒:ZNetScene.Awake 7.079 秒:ObjectDB.Awake 3.388 秒:DungeonDB.Start 2.262 秒:ZNet.Awake 0.437 秒:ZoneSystem.Start 0.301 秒:Game.RequestRespawn 0.293 秒:ZNet.Start 0.167 秒:Game.SpawnPlayer 作用域深度大厅归因:ObjectDB.Awake 和 ZNetScene.Awake 中的独占同步 Harmony 回调时间。细分顺序:ObjectDB + ZNetScene。已准备的调用:已安装=4,已存在=398,已跳过=2,失败=0,设置=0.021 秒 11.973 秒(0.189 秒 + 11.783 秒):Jotunn 4.423 秒(4.418 秒 + 0.005 秒):DataForge 0.813 秒(0.813 秒 + 0.000 秒):AdminQoL 0.534 秒(0.047 秒 + 0.486 秒):EpicMMOSystem 0.246 秒(0.211 秒 + 0.035 秒):WarfareFireAndIce 0.180 秒(0.116 秒 + 0.064 秒):Jewelcrafting

对于 15.022 秒(13.311 秒 + 1.711 秒):ZNetScene.Awake, 13.311 秒 被测量的生命周期执行和 1.711秒 是距离下一个里程碑的剩余时间。限定归因行使用 对象数据库与网络场景 命令。

限制

LoadTimeProfiler 可观测的同步工作属性。网络等待、协程延续、后台任务、原版工作、转译代码,以及通过其他框架委托的工作可能仍未被归因,或显示在该框架下。超时保护无法使离线、不兼容或永久停滞的对等端连接成功。

Valheim: 英灵神殿 的热门 MOD

探索适用于 Valheim: 英灵神殿 的最佳MOD,带来新功能、升级画面,以及令人兴奋的方式来改变您的游戏体验。

使用 Xmod 解锁 Valheim: 英灵神殿 的全部潜力 — 今天就探索这些顶级 MOD!