【问题标题】:andengine (android opengl) low cpu usageandengine (android opengl) cpu 使用率低
【发布时间】:2015-04-12 11:58:44
【问题描述】:

我有一个andengine游戏,它有:

  • 在普通 Galaxy S3 上为 45-50-55 fps,手机温度较高。
  • 在 CM11 Galaxy S3 上稳定 60 fps,在性能模式下(最大 cpu 频率 = 1400mhz)。使用root您可以修改cpu频率。手机温度几乎是热的。
  • 在我的 Nexus 6(无 root)上为 40-45fps,但这款手机比 Galaxy s3 更快!手机温度几乎是冷的。
游戏的分辨率是一样的!

主要问题是:为什么我的游戏在两个设备上的 fps 相同?在 Nexus6 上应该更快!

游戏是:https://play.google.com/store/apps/details?id=com.hattedskull.gangsters

【问题讨论】:

  • 我用 adb shell top -m 10 -d 1 -s cpu 测量了 cpu 使用率。最大 CPU 使用率为 40%!所以问题是cpu没有在最大负载下工作。如何从代码中增加它?

标签: android opengl-es andengine


【解决方案1】:

当一个 cpu 速度更快但显示的性能不如另一个 cpu 时,可能是它只使用了 2、4、8、12 个内核中的 1 个。这只是 25% 的使用率,cpu 保持冷态。单核 CPU 将始终以 100% 的速度燃烧,并且会变热。多线程是解决方案。这将“强制”cpu 以 100% 运行,游戏将运行得更快

【讨论】:

  • 感谢您的回答,但我应该在 Nexus 6 上以稳定的 60fps 运行。
  • phonearena.com/phones/Google-Nexus-6_id8626 nexus6 确实有一个四核,所以多线程是解决方案。另外,您自己说cpu正在运行@ 40%,这也是您应该使用多线程的指标。你问那个 cmets 如何增加 cpu 使用率。答案将再次是多线程。我不知道你使用的是哪种语言,所以你必须自己弄清楚多线程在你的平台上是如何工作的
  • 谢谢!基本上你是对的:多线程非常重要,但我在引擎中只有一个更新线程(基于java)!如何将其划分为单独的线程?帖子中有一个新问题:为什么我的两个设备上的游戏 fps 相同? Nexus6 有更快的处理器。如果我将频率改为最大,游戏会更快!不仅多线程是问题。 ps:我在更新线程上有很多updatehandler(不同的线程)。
  • 你可以做 code*class* extends Threadcode 并拥有一个 code public void run() { //do stuff} code 方法,你可以在其中做一些事情并拥有一个执行code t = new Thread (this, threadName); 的启动方法; codecodet.start(); code 应该不错。 4 核至少有 4 个线程
【解决方案2】:

我正在回答我的问题,因为它并不明显(对我来说),所以解决方案是:

  1. 性能模式:手机root后,我在性能中更改了缩放调节器(处理器)模式,不需要更改min hz。现在手机很热,不热!
  2. 移动广告效果不佳:我关闭了所有互联网连接(wifi、移动),因此移动广告从游戏中消失了。我在我的游戏中使用了 admob,它的性能不是最好的。

这些导致我的游戏中的 FPS 下降!

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-30
    相关资源
    最近更新 更多