【问题标题】:How to profile execution time of methods in a JUnit Test in Eclipse如何在 Eclipse 的 JUnit 测试中分析方法的执行时间
【发布时间】:2021-05-26 11:47:30
【问题描述】:

我有一些运行速度相对较慢的组件测试(每个测试几秒钟),并试图找出哪些函数占用的时间最多。当我运行 JUnit 测试时,有没有一种方法可以在 Eclipse 中向我显示,可能类似于覆盖率数据?

我已经尝试过为此使用 VisualVM,但我遇到的问题是测试过程仅在测试运行时可用,所以我能做的最好的就是在测试开始时放置一个断点,然后调试测试,附加 VisualVM 分析器,然后取消暂停测试,遗憾的是,这意味着无论我需要取消暂停测试几秒钟,都会使统计数据膨胀。

感觉应该有某种方式说“开始测试和分析方法执行时间”,但我现在一直在寻找一些不同的选项(例如 Eclipse 的 Java Monitor 插件),但似乎没有一个提供那个选项?

有没有办法做到这一点?还是暂停每个测试然后手动附加分析器真的是最好的解决方案?

也许与此有关,如果我有一个测试用例套件,如何在运行任何测试之前附加分析器?

【问题讨论】:

  • 我一直将 JProfiler 与 Eclipse 一起使用,并且从未遇到过附加分析器、必须命中正确实例等问题。您可能想尝试一下 VisualVM。
  • @RalfKleberhoff :看起来很有趣,但是如何让它在 Eclipse 中工作?我安装并集成它,使用 -clean 启动 eclipse,启用配置文件操作,但由于某种原因,如果我右键单击测试并说 Profile as...,则没有可用的操作,我不知道如何添加分析配置。我希望有一个Profile as... > JUnit TestProfile as... > JProfiler 可用,但没有。
  • 抱歉,我不记得我在 Eclipse 中必须采取的步骤。在我的 Eclipse 中,上下文菜单中有Profile as... > JUnit Test,然后它会启动 JProfiler。在 Window / Preferences 中,您是否设置了 JProfiler 可执行文件 .EXE 位置?
  • @RalfKleberhoff :对我来说,“Profile as...”下的唯一选项是“Profile on Server”,这似乎没有任何作用,并且添加新的 Profiling 配置似乎也只添加新的服务器内容。 “JProfiler 可执行 .EXE 位置”是什么意思?我查看了Window.Preferences,但找不到此设置。我需要安装额外的插件吗?在安装 JProfiler 时,我确实将它与 Eclipse 集成,但仔细想想,我看不到任何迹象表明该集成有效。
  • 对不起,那我也帮不上忙了,也许一些 JProfiler 支持论坛可以回答这个问题。

标签: java eclipse junit profiling


【解决方案1】:
long startTime = System.nanoTime();
//your code to measure the time of
long estimatedTime = System.nanoTime() - startTime;

您可以打印出估计时间,而您的代码中花费时间最长的部分是打印出最大数字的部分

here are some more information on System.nanoTime() and System.currentTimeMillis() and the source

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 2010-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多