【发布时间】:2021-09-07 00:05:06
【问题描述】:
我有一个 Grails REST 应用程序(版本 2.5.1),用于跟踪道路网络上的路线。该网络作为 LOD 网络托管在 Oracle DB 中。这个应用程序的性能非常好,只需几秒钟就可以返回一条完整的路线。
我尝试将此应用程序升级到更高版本的 Grails,最近一次是(4.0.3)。在追踪路线时,速度非常慢(大约 20 分钟而不是几秒钟)。该代码主要由服务组成,并带有一个控制器来启动它。没有域类,响应格式为 GeoJSON 线串。
当调用 Oracle Network API 中的 NetworkAnalyst.shortestPathDijkstra 方法时会出现缓慢。
我已经更新了用于 Oracle 19c 版本的 jar 文件,还尝试了 JDK 8 和 JDK 11,没有任何重大变化。
有没有人知道为什么更改 Grails 版本会对这段代码的速度产生如此重大的影响?
【问题讨论】:
-
“当调用 Oracle Network API 中的 NetworkAnalyst.shortestPathDijkstra 方法时会出现缓慢。” - 使用的 Grails 版本会影响 Oracle Network API 中代码的性能是没有意义的。
-
我建议使用一个新的空 Grails 应用程序(grails create-app ...),然后添加最少的代码来测试该调用。另外,请检查它是否正在触发多个(重复)网络调用,因为您可能会受到 API 的限制?
-
@Jeff Scott Brown 我不明白为什么 Grails 版本会影响速度,但这基本上是两个版本之间的唯一变化。
-
@nickdos 我想我会在有时间的时候尝试这样做。这有望提供一些进一步的见解,但代码仍将相当复杂