我目前正在进行遗传编程方面的一些研究,而且我还无法访问多台计算机,以便我可以执行聚合计算。目前,我的家用台式机上只需要1.5小时的研究,所以它并不难以忍受,但随着分析变得更加先进,我预计数据量将大幅增加。
在这些条件下,我们可以通过哪些方式优化Java对处理器的使用?
答案 0 :(得分:0)
由于您正在使用遗传编程,因此您需要花费大量操作来执行以下一项(或多项):
要确定代码的热点,请使用JVisualVM,对于您的用例,采样窗格就足够了。
根据我的经验,我会说有两个主要可能的热点:
如果您正在使用固定大小的人口,您可以考虑在堆外工作,但这可能会使您的计划变得非常复杂。
我不知道你是否正在使用像JGAP这样的框架,但后者的速度非常慢,封装和大型调用堆栈太多。这对于概念的证明是非常好的,但是当事情变得密集时,你必须自己做。
编辑:阅读评论,我看到你的代码没有并行化,你必须绝对开始。这对于GP来说是微不足道的,只需并行运行适应度,然后并行运行下一代计算。