基于 HSQLDB 的库非常慢:试图缩小对 bug 的搜索范围
HSQLDB-based library very slow: trying to narrow down search for bug
我将第 3 方库集成到我的 Java 项目中。该库依赖于 HSQLDB.jar
。这个库——以及它附带的 HSQLDB.jar
版本——有点旧,最后更新于 2010 年。它也相当大。在我的代码中,我遍历数据点并调用库来执行一些计算。我注意到处理所需的时间或多或少随着数据点的数量呈指数增长。例如,100 分,与不使用库的版本相比差异很小;对于 2000 点,相差大约一个小时; 5000 点需要几天才能完成,而没有它需要几个小时!
我尝试将 HSQLDB.jar
更新到最新版本,但是出现了一堆异常,所以我恢复到旧版本。
我 运行 hprof
并且它报告说总时间的很大一部分花在 org.hsqldb.persist.Cache.cleanUp
上。我现在想做的是以某种方式缩小我对问题所在 and/or 发生位置的搜索范围。由于只有在处理大量输入数据时才会注意到它,因此我想在开始调试运行之前做一些初步工作 "triage"。
遗憾的是,此时我无法在此处显示任何代码摘录,因为我不知道哪些摘录是相关的...
所以我的问题是:它在 org.hsqldb.persist.Cache.cleanUp
中花费太多时间这一事实是否表明问题的根源?
在 org.hsqldb.persist.Cache.cleanUp
中花费的时间表明它的内存缓存设置较小,导致频繁清除和读取缓存。
您可以关闭应用程序并手动编辑缓存设置较大的数据库的.script 文件。
HSQLDB 指南中有详细信息:
http://hsqldb.org/doc/2.0/guide/deployment-chapt.html
您可以在 .properties 文件中找到数据库的确切版本,并从 SourceForge 下载该版本的 zip 包,并参考其指南了解最大允许值。
我将第 3 方库集成到我的 Java 项目中。该库依赖于 HSQLDB.jar
。这个库——以及它附带的 HSQLDB.jar
版本——有点旧,最后更新于 2010 年。它也相当大。在我的代码中,我遍历数据点并调用库来执行一些计算。我注意到处理所需的时间或多或少随着数据点的数量呈指数增长。例如,100 分,与不使用库的版本相比差异很小;对于 2000 点,相差大约一个小时; 5000 点需要几天才能完成,而没有它需要几个小时!
我尝试将 HSQLDB.jar
更新到最新版本,但是出现了一堆异常,所以我恢复到旧版本。
我 运行 hprof
并且它报告说总时间的很大一部分花在 org.hsqldb.persist.Cache.cleanUp
上。我现在想做的是以某种方式缩小我对问题所在 and/or 发生位置的搜索范围。由于只有在处理大量输入数据时才会注意到它,因此我想在开始调试运行之前做一些初步工作 "triage"。
遗憾的是,此时我无法在此处显示任何代码摘录,因为我不知道哪些摘录是相关的...
所以我的问题是:它在 org.hsqldb.persist.Cache.cleanUp
中花费太多时间这一事实是否表明问题的根源?
在 org.hsqldb.persist.Cache.cleanUp
中花费的时间表明它的内存缓存设置较小,导致频繁清除和读取缓存。
您可以关闭应用程序并手动编辑缓存设置较大的数据库的.script 文件。
HSQLDB 指南中有详细信息:
http://hsqldb.org/doc/2.0/guide/deployment-chapt.html
您可以在 .properties 文件中找到数据库的确切版本,并从 SourceForge 下载该版本的 zip 包,并参考其指南了解最大允许值。