小编jlo*_*eet的帖子

WP7 C#/ XNA中的可变字符串?

我正在开发一款Windows Phone 7 XNA游戏.它是用C++编写的游戏的端口,因此,我试图尽可能少地重写游戏代码.

垃圾是WP7上的一个问题,因为收集器是非代数且速度慢的,因此一个集合(每1MB触发一次)每MB分配大约需要10ms.我完全打算使用最大的90MB可用,所以我们正在考虑每MB分配约900ms的停顿.

我已经能够重做工作,因此我们没有每帧生成垃圾,除了一些字符串的情况.

似乎StringBuilder.ToString()生成垃圾,这里描述的方法不适用于WP7.

我需要做的两件事是:

  • 格式化分钟/秒/ hundreths为mm:ss.hh以显示在屏幕上.显然,我可以使用StringBuilder(使用不会因装箱而创建垃圾的扩展方法)并使用SpriteBatch直接显示StringBuilder.
  • 将"foo.bar.baz.qux"形式的字符串拆分为"."上的数组,即{"foo","bar","baz","qux"},并将一个元素一次复制到字符串数组.这用于设置游戏角色的层次状态.它也几乎直接从原始游戏移植过来,而且很大程度上依赖于它以这种方式工作.我真的想避免重写它.

如果没有将大量代码转换为使用char []而不是字符串,那么有没有办法在C#中拥有真正无垃圾的可变字符串?

c# xna garbage-collection windows-phone-7

10
推荐指数
1
解决办法
645
查看次数

标签 统计

c# ×1

garbage-collection ×1

windows-phone-7 ×1

xna ×1