Skip to content

spark 优势何在?

spark 的 CPU 侧写与其他检测类程序比较

WarmRoast

spark 中的 CPU 侧写功能均来自 WarmRoast,但 spark 对它进行了一些优化,使得它与原本的 WarmRoast 分析器在一些内容上产生了差异:

  • 安装和使用相较前者更为方便。
    • 去掉了对底层服务器机器的访问功能。
    • 不再需要提供临时的搭建的网站服务器(打开端口,禁用防火墙?转到临时网页)。
  • 输出的分析报告可以很方便地与其他用户一同浏览。
  • 无需多余步骤即可应用反混淆影射,除原本的 MCP (Searge) 外,CraftBukkit 和 Fabric 源代码也已经支持反混淆。
  • 采样器和浏览器的组件都经过了显著优化。
    • 现在可以在内存占用更少的情况下拥有更高的采样频率了。
  • 添加了额外的个性化内容选项。
    • 允许过滤“卡顿滴答”,线程池归并群组线程等内容。
    • 允许按指定方法或类名过滤调用树的某一部分。
  • 采样的准确性得到提升。
    • 分析器可以将不同的方法归为一组,而不是只通过方法名称归类。

Minecraft Timings

Aikar 的 Timings 系统(内置于 Spigot 及 Paper 服务端中)与 spark 在某种程度上很相似,它们都用于服务器数据的记录与收集。

Timings 可以做到 spark 做不到的某些事:

  • 可以在一定时间内记录某些东西的次数(事件、实体击杀等)。
  • 对不熟悉阅读报告的管理员相当友好,它显示数据的方式更易于阅读。
  • 对部分服务器活动进行解释,有助于用户理解。 如果这些内容对你更重要,那么你应该选择它。

但是,如果这些不重要,那么可供你考虑的 spark 有这些优势:

  • 所有分析均自动完成——spark 会帮你记录所有数据。
    • 例如,timings 可能可以告诉你某个插件中的监听器正在消耗大量 CPU 处理 PlayerMoveEvent,而不能告诉你它的哪一部分消耗了如此之多——但 spark 就可以。
  • 对插件或服务器核心运行效率精益求精的程序员(或者只是希望上报问题的管理员),spark 的输出通常更加有用。
  • Timings 的报告通常不能给出有关代码的足够信息。

其他 Java 分析器

  • spark(一个抽样分析器)通常在数字上与其他分析方法(例如程序实时测量)更模糊,但允许目标程序不受干扰地运行。
    • 实际测试中,相较其他方法,抽样分析器可以提供更精确的结果,因为它不会过多干扰程序,这也意味着它不会有很多副作用。
  • 使用 spark 时无需在服务器开启时注入 Javaagent。
  • 更加方便地添加反混淆映射。
  • spark 能够排查大部分在 Minecraft 中可能遇到的性能问题,但对代码存在的性能隐患(换言之就是在其成为问题/瓶颈之前)尚无能为力。