您现在的位置:首页 --> 查看专题: 惰性
我们公司上海的工作室的一个 MMO 项目做服务器压力测试。谈及优化,涉及到服务器中使用的 C 模块。他们把同一套 C++ 加上 namespace 编译了很多份,供多个服务使用。我很好奇,一般来说,Lua 的 C 模块是可以供多个 vm 共用的,并不需要实际链接很多份。仔细探究发现,原来这个代码中用到了一些全局对象(singleton 模式)。
我本能的觉得全局对象的设计中透着糟糕的味道,在逐个分析每个全局对象的必要性时,发现了一个有趣的东西:寻路模块。
寻路模块本身的实现是没有持久状态的,场景地图的障碍信息是独立出去的静态不变数据,全局共享,这是合理的设计。但是一个无状态的 pathfinding 对象却被实例化了很多份,供不同的服务独立使用。
所谓惰性载入,就是说函数的if分支只会执行一次,之后调用函数时,直接进入所支持的分支代码。有两种实现惰性载入的方式,第一种事函数在第一次调用时,对函数本身进行二次处理,该函数会被覆盖为符合分支条件的函数,这样对原函数的调用就不用再经过执行的分支了,我们可以用下面的方式使用惰性载入重写 addEvent()。
[ 共2篇文章 ][ 第1页/共1页 ][ 1 ]
近3天十大热文
- [167] Go Reflect 性能
- [18] 公钥私钥加密解密数字证书数字签名详解
- [16] 基于HTTP缓存轻松实现客户端应用的离线支持
- [15] osx平台上lol英雄联盟launcher启
- [15] Joomla反序列化漏洞的查漏补缺
- [14] SSL多域名绑定证书的解决方案
- [14] 我的git笔记
- [13] Linux内存中的Cache真的能被回收么?
- [13] 在JavaScript中什么时候使用==是正
- [11] 无锁HashMap的原理与实现
赞助商广告