c# - GC 语言的优化,有什么想法吗?

标签 c# iphone mono xna xamarin.ios

在优化方面,我是一个相当大的新手。在我正在开发的当前游戏中,我已经设法优化了一个函数并削减了大约 0.5% 的 CPU 负载,这与我一直以来的表现一样“棒极了”。

我的情况如下:我使用名为 ExEn 的 XNA 包装器库在 MonoTouch 中开发了一款物理重度游戏,并尽可能尝试我发现很难让游戏在 iPhone4 上达到可玩的帧率(此时甚至不想考虑 iPhone3GS)。

性能下降几乎肯定是在物理计算中,如果我关闭物理,帧率会急剧上升,如果我禁用所有东西,渲染、输入、音频,只让物理在物理密集情况下性能徘徊在 15fps 左右。

我使用 Instruments 来分析性能,这就是我得到的:http://i.imgur.com/FX25h.png消耗最多性能的函数要么来自物理引擎 (Farseer),要么来自它们调用的 ExEn XNA 包装函数(特别是 Vector2.Max、Vector2.Min)。

我研究了这些函数,我知道 Farseer 在任何地方都可以通过引用而不是通过值将值传递给这些函数,所以这就是涵盖的内容(这实际上是我能想到的唯一方法。基本上,函数本身非常简单相当于这样的操作

return new Vector2(Max(v1.x, v2.x), Max(v1.y, v2.y)) 

基本上,我觉得自己被困住了,而且在我有限的能力和对代码优化的理解中,我不确定我的选择是什么,或者我是否有任何选择(也许我应该蜷缩成胎儿的姿势哭泣? ).启用 LLVM 并内置版本后,我最多只能获得 15fps。我确实设法通过降低物理精度将游戏提高到 30fps,但这使得许多关卡根本无法玩,因为 body 彼此相交并自行坍塌。

所以我的问题是,这是一个失败的原因还是我可以做些什么来提高性能?

最佳答案

首先,喜欢您在 Windows Phone 7 上的游戏!

其次,我在您的探查器输出中没有发现任何异常。我曾经对 Farseer 引擎(在 .net 中运行)进行了一次快速而粗略的性能分析,并得出了类似的结果。看起来您的减速几乎是成比例的,并且可能是由于单声道本身。

关于c# - GC 语言的优化,有什么想法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6597847/

相关文章:

iphone - iPhone 4相机拍摄的照片分辨率是多少?

iphone - 在Cocos2d中,如何创建一个layer,我可以设置它的区域大小,并且只显示属于这个区域的children?

c# - CSharpCodeProvider 'cannot find metadata file' 使用 Mono 编译插件代码

c# - Windows 8 网格应用程序中的空数据模板

c# - 更改父属性并删除子项时 Entity Framework 引发异常

iphone - 如何给事件响应着色。选项卡栏的选定图像?

java - 如何向微调下拉菜单添加箭头?

c# - 如何在 WINForm 中获取 robocopy(或其他 cmd 程序)输出?

c# - 可访问性不一致 : field type 'System. Collections.Generic.Dictionary<> 的可访问性低于其他字段

.net - 我可以使用 Linux/Mono 来部署 aspnet web 应用程序吗?