读TrinityCore源码有感
好吧,这个标题确实吹得有点⼤了。这⼏天趁下班回家简单调试了TrinityCore,读了部分代码,简单写下⾃⼰的看法。我毕业也将近2年⽽已,经历的公司也不多,所以可能观点不对不全⾯,但重在探讨。
1:关于服务器端能否⽤STL
我⽬前经历的两家游戏公司,服务器端都是⾃⼰造的STL,说难听点,就是⾃⼰造的极其劣质的containers,不外乎
array,list,hash,tree这四种,⽤起来也是极其不顺⼿,更重要的没有实现配套的算法或者配套的算法也是性能堪忧,STL不仅仅是containers,containers + iterator + algorithm才组成了完整且强⼤的STL,单从STL中algorithm来说,连接containers与algorithm 的是iterator,algorithm为不同containers提供了⼀套统⼀的接⼝(⽤到iterator traits技法),基本就是algorithm总能为提供的iterator做出最完美的实现。⽽看国内⼤部分公司造的轮⼦来说,哎,惨不忍睹。费⼒不讨好,⽤STL多好,毕竟⼤师级作品。如果读过陈硕的《linux C++服务器端编程》就知道,⾄少陈硕前辈表⽰完全允许使⽤STL。
2:关于服务器端内存碎⽚
这点和第1点有点重复,也许国内C++程序员(更多是服务器开发⼈员)对于内存碎⽚太过于担忧,更导致了STL在服务器端遭到了毙。但是看TrinityCore,则完美没有这种表现,⾥⾯改⽤STL的就⽤STL,如果实在内存吃不消,加上jemalloc这种也是⼀种极好的选择。关于服务器端是否需要担⼼内存碎⽚,这⾥有个很好的答案:
3:对新技术的看法
C++11的推⾏也有好⼏年了,但是纵观国内,不知道会使⽤甚⾄说愿意接触c++11的有多少⼈呢?殊不知⼤多数公司还停留在vc6/vc9以下。但是TrinityCore则是⼤量合理的使⽤C++11,lambda,move,forward,thread,lock,shared_ptr/weak_ptr,
源代码观后感400字unordered_map都是⾮常好⽤的,可惜,⾄少在⼯作中是根本没机会使⽤。我⾃⼰以前也对C++11持摒弃态度,觉得它太复杂,但是放下⼼⾥包袱,认真学⼀下的话,会发现C++11不仅不恐怖,反⽽更⽅便。在部分公司⽆法推⾏,可能处于历史原因,或者是部分⼈没有⼀种钻研新技术的精神吧。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论