上午调试完成,下午提交,折腾了一天,总算将windows下的库文件提交通过了,客户端和服务器端都暂时表现正常。
优化以后客户端driver减少了30M内存的使用量,实际上节省的会更多一些,因为减少了分配同时也意味着内存碎片也减少了。目前客户端启动时占用内存是180M左右,其中代码占了70M,driver占了90M,剩下20M主要是材质、骨骼动画。
虽然接下来还可以针对空间进行优化,但是暂时已经没有必要了,因为客户端重点应从资源管理方面入手进行进行优化,这才是主要开销之处。如果资源能够被合理的组织和调度,控制在50M之内应该比较容易,这样达到最后250M的占用还是比较轻松的。
晚上同事利用OGRE异步加载资源的功能调整了目前的实现,然而看了一下走路,表现还是不够流畅。不过通过诊断,已经有所眉目,看来本周内有望解决。令人头疼的是其他问题也亟需解决,时间苦短啊!
在完成driver内存方面的优化工作以后,我着手尝试进行执行效率方面的优化。通过改写VM的执行指令的相关代码,略微提高了性能(5%左右)。不过这些属于编码级的优化,只能算是小打小闹。另外,我打开了driver还从来没有在商业应用中真正使用过的优化功能 - 以前一直没有这个迫切的需求,为了稳定,我实现后从来没有开放过 - 今天一试,果然有问题,好在都和最近的优化工作相关。打开以后VM编译出来的中间代码有所缩短,性能有一定的提升。接下来两天,我考虑增加更多的优化方式以提高中间代码的效率。
总的来说,VM执行效率优化可提升的空间有限,我倒是很想实现JIT技术,不过时间有限,短期内估计无法做出稳定的版本,只能暂时先不考虑了。最终服务器端还是需要从具体实现入手来解决问题,目前这些只是略尽人事而已。
没有评论:
发表评论