一键安装此套包中的所有插件:
42plugin install antonykamp/kit/cc-truffle-performance-plugin包含的插件(13)
性能警告检测
antonykamp
在Truffle编译过程中检测优化障碍,识别虚拟调用、非常量存储、未解析类型检查和TruffleBoundary问题,防止性能峰值下降。报告带堆栈跟踪的精确源代码位置,是消除编译警告的关键步骤。仅适用于传统Truffle DSL节点(不适用于Bytecode DSL)。
CPU采样性能分析
antonykamp
基于时间的采样性能分析器,显示执行时间消耗位置(使用实际时间而非频率)。提供包含自身/总时间、编译层级(T0/T1/T2)和火焰图的直方图,适合作为识别耗时热点函数的第一步。开销低,适用于长时间运行,可与执行次数追踪配合分析单次执行时间与执行频率。
编译器图分析
antonykamp
转储并分析Graal IR编译器图,展示优化决策。使用BGV格式配合bgv2json/seafoam工具检查逃逸分析、装箱移除、内联决策和调用节点类型,揭示编译器实际优化与预期差异。建议在基础性能分析后仍无法确定根本原因时作为最后手段使用。
性能理论验证
antonykamp
使用性能分析工具协调验证性能理论,执行费米验证协议,运行相应工具技能,并从多源数据中综合证据。适用于生成理论后验证关键问题、系统化运行分析工具或收集量化证据的场景。
内联决策追踪
antonykamp
在编译过程中显示内联决策,包括调用树和内联/不内联的原因。用于验证关键调用是否被内联,理解内联失败的原因(如过大、递归、边界),并优化方法大小。良好的内联可提升编译效果。递归函数显示“未内联”——这是Bytecode DSL限制的预期行为。
基准测试建立
antonykamp
通过分析语言特性、查询计算机语言基准测试游戏和AreWeFastYet获取可比语言数据,创建本地基准测试实现,并生成全面的基准报告。在性能优化前使用以设定合理预期,适用于开始性能工作、需要基准测试、想与其他语言比较或建立预期性能范围时。
编译事件追踪
antonykamp
记录每次编译事件的时间、层级(T1/T2)、成功/失败状态及失效原因,用于验证热代码编译、诊断编译失败/回退、追踪重编译周期,并理解分层编译行为。结合性能警告检测插件可了解编译失败原因。
性能理论生成
antonykamp
分析 Truffle 语言实现以生成可测试的性能理论。加载基准基线,执行系统化代码分析,并生成带验证计划的优先级假设。在建立基线后使用,以便在性能分析前识别潜在性能问题,适用于分析代码缓慢原因、寻找优化机会或规划性能调查。
Truffle文档获取
antonykamp
从官方GraalVM、Truffle和Graal编译器文档中获取API指南、性能优化、编译器标志、性能分析、特化、Bytecode DSL、Truffle DSL、部分评估和编译分析等信息。适用于需要Truffle框架、GraalVM编译器选项或优化技术的权威文档时。
内存分配分析
antonykamp
实验性分配分析器,在宿主语言层面追踪内存分配。显示分配位置、对象类型和内存压力模式,用于识别高分配区域、发现不必要的对象创建并理解内存行为。热循环中的高分配若逃逸分析未能消除,则意味着优化机会。
性能报告生成
antonykamp
将已验证的性能发现编译为结构化分析报告,根据性能分析工具的定量证据创建优先级问题清单。适用于验证理论后生成最终文档、创建性能报告、记录发现或总结优化机会的场景。
执行频率追踪
antonykamp
在函数/语句级别精确统计执行频率(非时间),展示解释执行与编译执行的分布情况。用于验证函数编译率(>95%编译)、理解控制流模式及验证算法复杂度,通过显示频率而非时长来补充性能分析工具。
反优化检测
antonykamp
追踪从编译代码回退到解释器的反优化事件,用于检测反优化循环、不稳定假设和类型不稳定问题。稳态下零次回退是目标,多次回退表明存在严重性能问题,对诊断编译不稳定性至关重要。