当我在 junit 测试中运行我的函数时,我的时间比 bootRun 快 1000 倍。当我在 build.gradle.kts 中设置时
tasks.getByName<org.springframework.boot.gradle.tasks.run.BootRun>("bootRun") {
isOptimizedLaunch = false
}
时间相等然后试运行。为什么会发生?如何优化 bootJar?bootJar 没有参数 isOptimizedLaunch
功能示例
package com.example.demo
import java.util.concurrent.TimeUnit
class LongFun {
fun main() {
val startTime = System.nanoTime()
for (i1 in 0..10000) {
longFun(1000)
}
val endTime = System.nanoTime()
val durationInNano = endTime - startTime //Total execution time in nano seconds
var durationInMillis = TimeUnit.NANOSECONDS.toMillis(durationInNano)
println("time=$durationInMillis")
}
fun longFun(n: Int) {
for (i2 in 0..n) {
for (i3 in 0..n) {
var a = 1
}
}
}
}
我用https://start.spring.io/ (gradle, kotlin) 做的完整代码并没有改变任何东西
更新1。这是一个简单的例子,在我的应用程序中使用 optaplanner 时确实存在同样的问题,它也有很多计算。
更新2。使用 maven 我有同样的坏结果
- 测试中 - 2ms
- 在 gradle 中 isOptimizedLaunch = false - 2ms
- 在没有 isOptimizedLaunch = false 的 gradle 中 - 5245ms
- 在 Maven 中 - 5146ms