为什么我的游戏使用100%CPU而LunarLander却没有?

时间:2011-01-08 15:10:12

标签: android performance

基本上我的问题在标题中是正确的:为什么我的游戏使用100%cpu并且LunarLander示例没有?

我的游戏是目前几乎等同于功能LunarLander例如,与用于游戏循环一个单独的线程,更新物理/事件的while()循环且连续地绘制到屏幕。

然而,当我运行LunarLander并启用调试工具,它显示约50%的CPU使用率(模拟器我的双核PC上使用约25%)。我自己的游戏使用100%的cpu(和我的电脑上50%的模拟器)。

我不一定想要或需要降低CPU负担,提高我的比赛的表现(虽然它运行在模拟器和较慢的手机有点呆滞),但我真的不明白为什么LunarLander示例不使用100%?它基本上有一个while(true)循环,它在其中更新物理并不断地绘制到屏幕上。为什么这不会达到100%?

此外我的游戏非常相似:我在方法中更新我的游戏状态,然后将所有内容绘制到屏幕上。首先背景图像,它(的LunarLander示例使用绘图资源,而我使用位图,因为我没有改变他们,他们应该会更快),那么其他一些图像。当我不与游戏互动时,甚至都没有发生任何事情,并且交互是通过事件完成的,甚至在主循环中都没有。

有什么想法吗? : - )

1 个答案:

答案 0 :(得分:1)

任何线程只能使用少于100%的核心的唯一方法是它包含I / O,睡眠,与另一个线程的竞争,或者某些时候暂停它的任何东西。因此,如果你pause the lunar lander几次,你会看到它是如何暂停的。