Ale*_*llo 3 optimization android profiling garbage-collection
我正在制作我的第一款Android游戏,它将成为一款使用opengl es的3D街机游戏.我已经做了很长时间的工作,主要是为了未来的灵活性优化发动机.
无论如何,现在我完全已经完成了游戏功能和所有漂亮的东西,但它落后于不是我的调试手机的手机.该游戏拥有相当高质量的手机游戏图形,所以预计会有一点点落后,但是在Nexus S上运行游戏和在MyTouch 4G上运行游戏之间的性能差异是巨大的.这款游戏甚至不能在像LG Optimus这样的低端手机上播放(游戏运行,但它太过波涛汹涌,不能轻松玩).在我的Nexus SI上很少会出现波动(我在游戏中实现了帧率独立运动)但是在MyTouch 4G上它更常见,虽然游戏仍然可以播放......但是很烦人
我来自桌面游戏开发背景,优化从来没有引起我的兴趣.你能推荐什么来帮助我加快比赛速度?
我尽可能地尝试优化代码,并且性能得到了显着改善,但似乎有一些我错过或忽略的东西.它是一个巨大的游戏,具有完整的引擎和大量的代码.
我已经尝试跟踪所有分配并确保它们在运行时没有被释放或忘记,以便在播放时不会调用GC.多数民众赞成基本上我能想到的所有,我不知道还有什么可以使它lagg
而且我怀疑它是网格的聚合数,因为即使它们是高质量的,我在游戏中添加了一个选项,让你可以选择低,中,高的图形质量,就像电脑游戏一样,低和高之间的差异介于600-900个顶点之间!我注意到的唯一改进是加载时间.此外,没有任何特殊的后处理效果,灯光,着色器,实时SSS或其中任何一种.只是纹理面孔:P
我正在做的"lagg"随机冻结.我很确定他们是GC,但它可能是别的,因为我认为我已经找到并控制了所有的分配(有很多).由于我的游戏是独立于帧速率的,每当它解冻时,玩家和敌人以及所有东西都"向前跳"以保持同步,这使得已经很难的游戏变得更加困难!
我是剖析和优化的新手.我如何使用android调试工具(或其他第三方工具)来更好地了解我的游戏在运行时的表现,以及何时/为什么它会冻结以便我可以修复它们.
此外,奖金问题:):有没有办法让我看到它如何在没有手机或知道拥有它们的人的情况下在其他手机上执行?比如,即使我没有Droid X也没有我知道的任何人,它在Droid X上的速度有多快
您是否尝试使用traceview分析代码?插入
Debug.startMethodTracing("myfile");
Run Code Online (Sandbox Code Playgroud)
然后在onCreate上
Debug.stopMethodTracing();
Run Code Online (Sandbox Code Playgroud)
你希望它在哪里完成文件的编写.要查看结果,请将设备插入计算机并运行:
/path/to/android-sdk/platform-tools/adb pull /sdcard/myfile.trace
/path/to/android-sdk/tools/traceview ./myfile.trace
Run Code Online (Sandbox Code Playgroud)
这将显示哪些课程花费更多时间.您可以优化较慢的类,和/或将其移动到后台线程.
你提到它在某些手机中工作正常,也许这些是24MB/app限制而不是16mb/app限制的新款手机?您可以在Eclipse中尝试Memory Analyzer,以检查内存泄漏或不必要的大对象.要安装,请转到帮助 - >安装软件,然后使用
http://download.eclipse.org/mat/1.1/update-site/
Run Code Online (Sandbox Code Playgroud)
然后,当您在DDMS视图中进行调试时,选择Dump HPROF File(带有红色箭头的绿色玻璃),它应该打开内存分析器.
编辑 -
看来你需要将Android的HPROF文件现在转换,如所描述这里.
| 归档时间: |
|
| 查看次数: |
2311 次 |
| 最近记录: |