我需要优化一个Java应用程序。它会调用一些第三方API。我需要一个好的工具来准确地测量各个API调用所花费的时间。
为了让您明白其复杂程度,这个应用程序需要处理包含100万行数据的数据源文件,处理过程大约需要1个小时。在处理过程中,它要调用一些第三方API(包括一些网络调用)。我需要确定哪些调用比其他调用花费更多的时间,并根据此找到一种优化应用程序的方法。
如有建议,不胜感激。
我需要优化一个Java应用程序。它会调用一些第三方API。我需要一个好的工具来准确地测量各个API调用所花费的时间。
为了让您明白其复杂程度,这个应用程序需要处理包含100万行数据的数据源文件,处理过程大约需要1个小时。在处理过程中,它要调用一些第三方API(包括一些网络调用)。我需要确定哪些调用比其他调用花费更多的时间,并根据此找到一种优化应用程序的方法。
如有建议,不胜感激。
另一种更基础的选择是使用-Xprof
命令行选项:
-Xprof
对正在运行的程序进行分析,将分析数据发送到标准输出。该选项作为开发工具提供,有助于程序开发,但不建议在生产系统中使用。
这似乎非常适合您的使用情况。
在这种情况下,普通的分析器可能不是正确的工具,因为它们旨在测量被分析程序所用的 CPU 时间,而不是调用的外部 API,并且它们往往会产生很高的开销并收集大量数据,如果长时间运行可能会压垮您的系统。
如果您确实需要在如此长的时间内收集性能数据,主要是针对外部调用,则 Perf4J 可能是更好的工具。
visualvm(SDK的一部分)和Java 7可以生成详细的性能分析报告。