嘿计算器的社区!

我有一个问题,一个高度参与的算法程序是使用太少cpu利用率:之间的某3和4%。这是把很长返回的结果,我相信这只是不工作的努力不够。

做任何你的天才具有任何想法为什么这会发生-如果有什么我希望100%的利用率。一个附加详细说明的是,该方案使得插入一个sqlite3数据库,并因此是的,有很多JNI呼吁通过sqlite3jdbc图书馆我相信。(注意,我希望推迟这些插入一个PreparedQuery批早,但是这造成重大记忆问题-那里有一个很大的数据)。

在此先感谢

更新:固定的。是啊,我只是有够笨原来钥匙,但是我没想到源码将开始一个新的交易,做这么多的开销。

我现在使用一个预处理和排队32768项之前插入-似乎是一个很好足够的号码给我。

有帮助吗?

解决方案

显然数据库中的电话是造成延误。是不是一个选项,以创造更小批量和测试是否有帮助??也许你可以并行的算法,以及有一个队的某个地方把结果和另外一个线程的清洁,排队?

编辑:

还有一些其他问题领域:

  • 数据库的优化(模型)
  • 数据库服务器的结构
  • 磁盘的速度

所有这些因素应该考虑到

其他提示

如果类型IV,100%Java版本可用,我绝不会建议有人使用带有JNI的JDBC驱动程序。谷歌发现了这个

除此之外,没有更多信息,我无法说出任何话。应用程序和数据库是否在同一硬件上运行?

什么是<!>“;密集<!>”;关于INSERT?

我建议分析并获取一些真实数据而不是猜测。基于信仰的计算永远不适合我。

如果您正在编写大量数据,那么听起来您可能受到磁盘限制。看看机器上的磁盘io统计数据,如果这确实是瓶颈,要么找到更好的io硬件,要么找出如何做更少的写入。

磁盘正在减慢您的应用。 INSERTS使用磁盘,磁盘速度慢,操作系统需要等待写操作完成。

你不能使用2个线程,一个用于算法,另一个用于插入吗? 如果您只进行插入,您也可以将其写入文本文件,并在以后执行

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top