我正在用Java制作游戏。游戏目前分为三个线程(一个spawner线程,一个更新线程和一个绘制线程)。spawner产生一个向玩家移动的敌人。大约800次产卵后,游戏开始滞后(这在某种程度上是可以理解的)。问题是我应该为每个Ai创建单独的线程,还是应该在更新线程中更新它们(这是当前情况)。哪一个会产生更好的性能?在Java性能方面处理AI的最佳方法。 (单独线程vs单个更新线程)
回答
我建议你有比CPUS更少的关键线程。如果你有800个CPU,去寻找很多线程。如果不是的话,我预计线程池会更小。
你做了多少CPU和内存分析?性能分析比使用多线程可以实现更快的速度。
使用探查器找到缓慢是最好的开始,可能是线程根本无法帮助。 – TofuBeer 2013-03-09 20:22:30
@TofuBeer当我被要求查看一个系统时,我的第一个目标是通过测量定影性能问题使其速度提高10倍,这通常意味着*减少他们拥有的线程数量。 – 2013-03-09 20:29:19
...特别是如果你真的有800 cpu与800²缓存一致性问题,只要你同步任何东西... – 2013-03-09 20:40:05
- 1. 在单独的线程上调用iPhone CoreLocation的最佳方法?
- 2. 处理单独线程中抛出异常的最佳方法是什么?
- 3. 处理线程最大执行时间的最佳方式(Java)
- 4. 多线程vs单线程
- 5. 在单独的线程中更新ObservableCollection
- 6. Winforms - 以线程安全方式更新属性的最简单方法
- 7. 在新线程上运行简单函数的最佳方式?
- 8. 处理在单线程API中的事件处理程序中睡眠的最佳方法?
- 9. PyQT线程最简单的方法
- 10. 线程池vs许多单线程
- 11. 从工作线程更新表单控件的最佳方法是什么?
- 12. 在java中识别和处理锁定线程的最佳方法
- 13. ASP.net中的多线程最佳方法
- 14. 以多线程方式处理项目列表的最简单方法
- 15. 静态方法vs实例方法,多线程,性能
- 16. “在单独的线程中运行实例”的最简单方法是什么?
- 17. 在循环中一次处理X个线程的最佳方法?
- 18. Java:从多个线程检索时间的最佳方法
- 19. 简单的方法在新线程中调用方法
- 20. 在Win Forms应用程序中处理多个线程的最佳方式
- 21. 安全地更新单独线程中BufferedImage的单独区域?
- 22. 方法在单独的线程中运行 - 如何调用线程
- 23. 多线程类vs方法
- 24. C#,在单独的线程中执行事件处理程序
- 25. 从另一个线程处理线程执行的可能方法?
- 26. 多线程VS单线程计算
- 27. java中的线性方程
- 28. 在Android服务的单独线程中运行位置更新
- 29. 最佳多线程的方式来处理文件
- 30. 单独线程中的多个表单
AI之间需要发生多少通信? – TofuBeer 2013-03-09 20:12:24
根本没有。唯一需要进行的沟通是在玩家和AI之间进行。 – Tikitaco 2013-03-09 20:13:03