CPU 用法:Bullet 与 Box2d 引擎

CPU usage: Bullet vs Box2d engines

我使用 2d 库 jbox2d 已经有一段时间了,最​​近一直在研究 bullet 3d 物理引擎。

我想知道的是 CPU 典型四核的消耗,比如说 i5(我假设 bullet 是多线程的?)会是什么。

即使在 jbox 中,也很容易产生滞后,甚至完全崩溃处理过多的模拟,我想知道在使用 Bullet 引擎切换到 3d 物理时会损失多少处理能力。

大型免责声明:-

  • 我从未对两个物理引擎使用过 multi-thread。
  • 我也从来没有用它们创建过相同的应用程序,因为一个是 2D,另一个是 3D。
  • 我会根据我过去的记忆来回答,而不是对它们进行基准测试。我承认这不是一个好的做法。

如果我必须模拟大约 100 个物体(JBox2d 中的 2D 矩形,Bullet 中的 3D 立方体):-

  • 使用Release模式编译的C++(优化开启)
  • Java 使用 Release 模式编译(非调试模式),使用 ctrl+F11 Eclipse
  • 计算机未处于压力状态(已打开最小程序)
  • 两个物理引擎都没有约束(Box2D 的关节,Bullet 中的 btConstraint)。
  • Body是四处散落(有时会相互碰撞),不能堆叠。
  • 所有的尸体都离得太远了。粗略地说,都在一个屏幕上。
  • 我有一些游戏逻辑,但不是太重。
  • C++ 程序以 C++ 风格编写得很好(没有滥用 new/deleteshare_ptr 太多)
  • Windows 7 的规格可以玩大多数当前的 PC 游戏 (2017)。

我预计 C++ & Bullet-程序 运行 比 Java & Box2D 快 :- 3 次(相当保守)- 10 次(常见)。

编辑:-

我刚刚想起几年前在我的旧电脑上的一个真实测试用例。

当我在 JBox2D 中 运行 400 个矩形时,我几乎无法达到 60 fps,物理部分的 10-30% CPU。
但是,我可以在 C++ Bullet 中添加大约 4000 个立方体,并且在 Physic 部分(已配置)我可以获得大约 60 fps 和 10-30% CPU。

(我记下了 10-30%,因为我不记得确切的数字了。)