Java 为什么作为Junit测试运行会导致性能下降?

Java 为什么作为Junit测试运行会导致性能下降?,java,junit,Java,Junit,我运行一个函数并测量它所花费的总时间。首先,这是作为Junit测试编写的,同样是作为带有主函数的类编写的。调用main执行与Junit运行的相同的函数 Via TestRunner: Total time taken for transformation rules: 49 Via JUnit: Total time taken for transformation rules: 515 时间以毫秒为单位。JUnit测试比从主函数运行它花费的时间多10倍。JUnit会做一些我在这里错过的额外

我运行一个函数并测量它所花费的总时间。首先,这是作为Junit测试编写的,同样是作为带有主函数的类编写的。调用main执行与Junit运行的相同的函数

Via TestRunner:
Total time taken for transformation rules: 49

Via JUnit:
Total time taken for transformation rules: 515

时间以毫秒为单位。JUnit测试比从主函数运行它花费的时间多10倍。JUnit会做一些我在这里错过的额外的事情吗?为什么性能会如此恶化?

“junit会做些额外的事情吗”-当然会,但这不会导致性能问题。您是如何运行测试和应用程序的?您是如何衡量性能的?由于JIT优化,进行微基准测试可能很棘手。您是否尝试过使用探查器查看时间花在何处?一个数据点说明不了什么。一般来说,它可能不是x10,而是一个恒定的开销加上一个低得多的因数。还很大程度上取决于测试的粒度、生成的报告等。