npm 包 @types/screeps-profiler 使用教程

阅读时长 4 分钟读完

在 Screeps 游戏中,性能优化一直都是非常重要的一环。尽管我们可以通过手动插入 console.timeconsole.timeEnd 进行代码运行时间的计算,但这种方法并不太好用,并且会浪费时间和精力。现在,我们可以使用 @types/screeps-profiler 这个 npm 包来更加轻松地追踪和优化我们的代码。

安装

首先,我们需要安装 @types/screeps-profiler。在命令行中,输入以下命令即可:

追踪

在您的代码文件中,只需添加两行代码即可开始追踪。第一行应该在您的游戏启动时的主文件中添加:

这个函数的作用是将 Game 对象的所有原型方法包装在一个新的函数中,用于测量它们的执行时间。它还会在控制台中打印一个聚合报告,列出每个函数的执行时间和调用次数。无需担心性能问题,因为它不会改变执行时间,而且只在输出时使用 console

现在,您需要失败每个要追踪的函数的调用:

其中,fn 是要包装的函数,'name' 是要为它设置的名称。在这样一段例子中,我们遍历 Game.rooms 并在控制台中输出它们的名称:

现在,我们可以重新加载代码并访问 Screeps 控制台以查看精美的可视化报告了!

优化

最后,您可能会发现代码中的一些性能瓶颈,并需要进行优化。例如,在我们的示例中,我们已经确定了可以进一步优化代码的区域,例如移除不必要的函数调用。最好的方法是仅在必要时使用 registerFN,而不是在程序的每个角落使用它。

例如,为了了解一个对象是否为 null,您实际上不需要调用 registerFN,因为它对性能的影响极小:

在一些重要的函数上使用 registerFN,而在次要的地方则不要,这样您就不会造成额外的反响并确保您的游戏性能得到提高!

结论

通过使用 @types/screeps-profiler,您可以更快地找出需要优化的区域,绕过艰难的手动测量,并在不需要修改模块的情况下访问有用的报告。这样一来,您的 Screeps 游戏会运行得更快,更流畅,并能够处理更多的逻辑!

示例代码

以下是我们上文中提到的 示例代码,您可以将其用于实际的 Screeps 游戏中:

-- -------------------- ---- -------
------ - ------------ ---------- - ---- --------------------

-- ------- ---------------------------- ---- --- -------- -------
------------------------------------------------- --------------------------------

------ ----- ---- - -------------- -- -
  -- ------- --- ---- ----
  ------------- -- -
    --------------------- ---- -- -
        -- ------- -----------------------
        ------------------------- ---------------------------
        -- ------- ------------------------
        -------------------------- ----------------------------
    ---
  -- ------------
---

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedc1dbb5cbfe1ea0611f4d

纠错
反馈