复杂度分析视图 (view) 允许您根据所选方法的方法参数调查其算法复杂度。
要温习关于大 O 表示法的详细信息,建议阅读算法复杂度介绍以及常用算法复杂度对比指南。
首先,您必须选择一个或多个应被 monitor 的方法。
对于每个方法,您随后可以输入一个脚本,其类型为 long 的返回值将用作当前方法调用 (method call) 的复杂度。例如,如果类型为
java.util.Collection 的方法参数之一名为 inputs,则脚本可以是 inputs.size()。
复杂度记录独立于 CPU 记录。您可以直接在复杂度分析视图 (view) 中启动和停止复杂度记录,也可以使用记录配置文件 (recording profile) 或触发器 (trigger) 动作。停止记录后,将显示一个包含结果的图形 (graph),其中 x 轴绘制复杂度,y 轴绘制平均执行时间。为了减少内存需求,JProfiler 可以将不同的复杂度和执行时间合并到通用存储桶中。顶部的下拉列表允许您在配置的不同方法之间进行切换。
该图形 (graph) 是一个气泡图,其中每个数据点的大小与其中的测量次数成正比。如果所有测量值各不相同,您将看到常规的散点图。在另一个极端情况下,如果所有方法调用都具有相同的复杂度和执行时间,您将看到一个单独的大圆圈。
如果有至少 3 个数据点,则会显示常见复杂度的曲线拟合。JProfiler 会尝试几种常见复杂度的曲线拟合,并首先向您显示最佳拟合。曲线拟合的下拉列表还允许您显示其他曲线拟合模型。曲线拟合描述中嵌入的 R2 值显示拟合的优劣程度。下拉列表中的模型按 R2 降序排列,因此最佳模型始终是第一项。
请注意,R2 可以为负数,因为它只是一种记号,并不是真正的某个数值的平方。负值表示拟合效果比常数线拟合更差。常数线拟合的 R2 值始终为 0,而完美拟合的值为 1。
您可以通过在导出对话框中选择“Properties”选项来导出当前显示的拟合参数。对于质量保证环境中的自动化分析,命令行导出同样支持 properties 格式。







