CPU使用率:Bullet vs Box2d引擎

问题描述:

我一直在使用2d库jbox2d一段时间了,并且最近一直在研究子弹3d物理引擎。CPU使用率:Bullet vs Box2d引擎

我在想什么是典型的四核CPU的CPU消耗,比如说i5(我认为子弹是多线程的)将会是什么样子。

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

+0

问问确认:你想比较“bullet3D(C++)”与“jbox2d(Java)”吗? – javaLover

+0

这是一个C +库,是的。 http://bulletphysics.org – bigcodeszzer

+0

我不得不问,因为Bullet3D已被移植到许多平台。 – javaLover

大免责声明: -

  • 我从来没有使用多线程两种物理引擎。
  • 我从来没有使用过它们来创建相同的应用程序,因为一个是2D,另一个是3D。
  • 我会回答我的过去内存而不是基准他们。我承认这不是一个好习惯。

如果非要模拟〜100量体(2D-rectange在JBox2d的子弹,3D立方体)的: -

  • C++与发行模式(优化转)
  • 编译Java的编译版本方式(不调试模式),使用Eclipse的ctrl+F11
  • 电脑不处于应激状态(铅丹程序打开)
  • 没有限制(在子弹接头,用于Box2D的,btConstraint)两个物理学引擎。
  • 身体散乱(有时相互碰撞),没有堆叠。
  • 所有的身体都不太远。全部在1个屏幕中,粗略地说。
  • 我有一些游戏逻辑,但不是太重。可以播放大多数当前PC游戏(2017年)的规格的Windows 7。这些Windows 7可以播放大多数当前PC游戏(2017年)的规格。

我可以期待C++ & Bullet -program跑得比Java & Box2D周围更快: - 3倍(相当保守) - 10次(普通)。

编辑: -

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

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

(我注意到10-30%,因为我不记得确切的数字。)

+0

我通常认为box2d的运行速度要快5-10倍,这是因为数学应该更复杂一些,特别是对于3D中的碰撞。如果没有,显然jbox运行非常糟糕。 – bigcodeszzer

+1

@bigcodeszzer是的,当时我的结果令人惊讶。但是,请考虑你也在比较不同语言的表现。如果C++在某些情况下被良好编码和测试,那么C++的速度可能会比Java快得多。这是C++通常是赢家的情况之一(游戏)。 ......公平地说,请测试'C++ Box2D'和'C++ Bullet'。 (我从未测试过它。) – javaLover