Java 棋盘游戏AI中的对象池
我被要求创建一个棋盘游戏AI(该游戏非常类似于跳棋)。到目前为止,我用一块比特板完成了NegaScout的基本实现,在5秒内,我可以达到10层半深。游戏的类别在于完成时间。换句话说,在整个宇宙中,几乎有比原子更多的运动。NegaScout帮助我减少了这个数字,但我仍然需要处理大量可能的动作 我的电路板已经是静态的,具有do/undo功能。但对于每个新的板卡配置,我需要生成所有允许的移动,即使我的类很简单,也需要花费大量时间:Java 棋盘游戏AI中的对象池,java,algorithm,artificial-intelligence,object-pooling,Java,Algorithm,Artificial Intelligence,Object Pooling,我被要求创建一个棋盘游戏AI(该游戏非常类似于跳棋)。到目前为止,我用一块比特板完成了NegaScout的基本实现,在5秒内,我可以达到10层半深。游戏的类别在于完成时间。换句话说,在整个宇宙中,几乎有比原子更多的运动。NegaScout帮助我减少了这个数字,但我仍然需要处理大量可能的动作 我的电路板已经是静态的,具有do/undo功能。但对于每个新的板卡配置,我需要生成所有允许的移动,即使我的类很简单,也需要花费大量时间: public class Move { private fin
public class Move
{
private final byte startIndex;
private final byte endIndex;
private byte endPawn;
public Move(final byte start,final byte end){startIndex = start; endIndex = end;}
public final void setEndPawn(byte pawn){endPawn = pawn;}
//OTHER FUNCTIONS.. (ONLY FOR DISPLAY/DEBUG)
}
所以我有两个问题
FIRST=对象池(移动中)是否会提高我的性能
第二个=如果(第一个),那么您能告诉我如何实现它吗?(链接和小代码示例将非常感谢!!)
对象池(移动中)是否会提高我的性能
对象池通常用于提高性能。它是否真的能成功地提高性能完全是另一回事
如果您运行在一个内存充足、垃圾收集器性能良好的平台上,那么丢弃一个对象并创建一个新对象通常比尝试回收要快。这实际上取决于初始化对象的成本
如果您的平台速度较慢或内存有限,则等式可能倾向于对象池。但是,缺点是内存池会使代码更加复杂。此外,您需要防止该池成为一种内存泄漏
总而言之,我建议不要实现内存池,直到您得到一些可靠的分析数据表明它可能会有所帮助
参考: