- mono的JIT在运行时会造成轻微的卡顿。为了避免这个卡顿对手感的影响,我们在进入游戏时就对局内的功能类做预编译。预编译很简单,调用一下函数指针即可。找到应该预编译哪些累则稍麻烦一些,要给mono加些日志,输出局内JIT编译的函数列表
- 局内关闭mono的GC,具体内容在之前的一篇博客中有介绍
- Android平台内存分析。为了降低内存占用,我们对游戏进程在android平台上的内存占用进行了仔细的分析,除去各种资源和对象占用的内存,java内存,总是还有很多native内存不知道被什么占用了。后来我们在打开了调试选项的android系统上运行(手机的系统是我们自己编译的),这时通过ddms工具就可以看到所有so库的内存增量。进而发现有一些我们接入的第三方组件占用了不少内存。
- 项目到了一定规模以后,代码编译的时间大幅增加到了几分钟的时间。这对于开发效率影响很大。传统的优化方式是将不常改动的框架性代码挪到firstpass,实践的效果并不是很好。一个更好的方案是用微软的编译器替代mono的编译器。做一个编译命令的简单转发层,将mono的编译命令转发给微软的编译器。编译时间一下子降低到30秒左右。
想到再补充