复杂性分析
复杂性分析视图允许您根据方法参数调查所选方法的算法复杂性。
为了刷新对大O符号的详细了解,推荐阅读 算法复杂性入门 和 常见算法复杂性比较指南。
首先,您必须选择一个或多个需要监控的方法。
对于每个方法,您可以输入一个脚本,其返回值类型为
long
,用于当前方法调用的复杂性。例如,如果某个方法参数的类型为
java.util.Collection
,并命名为 inputs
,则脚本可以是 inputs.size()
。
复杂性记录与CPU记录无关。您可以直接在复杂性分析视图中启动和停止复杂性记录,或者使用 记录配置文件或触发器动作。 记录停止后,将显示一个图形,结果在x轴上绘制复杂性,在y轴上绘制执行时间。为了减少内存需求,JProfiler可以将不同的复杂性和执行时间合并到公共桶中。顶部的下拉菜单允许您在不同的配置方法之间切换。
图形是一个气泡图,其中每个数据点的大小与其中的测量次数成比例。如果所有测量值都是不同的,您将看到一个常规的散点图。在另一个极端情况下,如果所有方法调用具有相同的复杂性和执行时间,您将看到一个大的圆圈。
如果至少有3个数据点,将显示一个具有常见复杂性的曲线拟合。JProfiler尝试从几个常见复杂性中进行曲线拟合,并最初向您显示最佳拟合。曲线拟合的下拉菜单还允许您显示其他曲线拟合模型。嵌入在曲线拟合描述中的R2值显示了拟合的好坏。下拉菜单中的模型按R2降序排列,因此最佳模型始终是第一个项目。
请注意,R2可以是负数,因为它只是一个符号,并不是真正的平方。负值表示拟合比常数线拟合更差。常数线拟合的R2值始终为0,而完美拟合的值为1。
您可以通过在导出对话框中选择“属性”选项来导出当前显示的拟合参数。对于质量保证环境中的自动分析, 命令行导出也支持属性格式。