http://blog.youkuaiyun.com/fuzb/article/details/2419591
最近一直在搞优化,代码不断的被翻来翻去,这里想回顾一下,当然明天还要继续,因为没有最快,只有更快
我们的引擎是一个次时代引擎的框架,等把基本的东西(地形和模型等)快速完成后,游戏的帧速不理想,切换场景的时候也会卡一下.显然完全不能实用,所以开始优化了
1)发现这些基础的数据结构和算法的时间复杂度都比较高,居然还没有一般的stl应用来得快,直接晕死/.改掉这些,提高了一些
2) 软件的设计上由于遵循的次时代引擎,光影和材质都是非常灵活和强大的,但是这样在底端的机器运行会效率很低,没有办法,我们去掉了象素光照,法线贴图还有材质简化了很多.速度明显提升很多
3)内存采用了自定义的小对象分配器.之前用了优化的windows虚拟内存技术(这个技术是之前一个大型mmo积累下来的).发现更慢.这是因为我们要频繁分配和释放小块的对象,而不是大块的资源..
4)通过汇编指令,我们一些地方用了mmx
5)借助intel vtune和thread profiler优化了程序,合适的地方采用了多线程来处理(比如八叉树),,但是由于之前的一些东西做得太快,这块走了很多弯路,后来我们觉得如果只是一些模型和地形,除了io多线程其他的不多线程应该也能优化到不卡.很明显,这块要持续进行