刚入行不久,最近学习了设计模式后发现当前项目存在非常多的冗余部分,即相似的代码到处都是,需求一遍必须改源码。
但听说使用虚函数会有开销,尤其在游戏开发中,大量用户访问服务器,必定造成大量使用虚函数,造成的开销是不是更加大,那应该放弃使用虚函数而更多采用编译时多态吗?
这样编码就会造成大量代码的冗余,而为了有更好的结构又不得不用虚函数,否则一样逻辑的代码写那么多遍,改变需求的时候又要去更改源码,这样维护起来又很麻烦。
那么如何在效率和编码风格之间建立一个平衡点呢?
刚入行不久,最近学习了设计模式后发现当前项目存在非常多的冗余部分,即相似的代码到处都是,需求一遍必须改源码。
但听说使用虚函数会有开销,尤其在游戏开发中,大量用户访问服务器,必定造成大量使用虚函数,造成的开销是不是更加大,那应该放弃使用虚函数而更多采用编译时多态吗?
这样编码就会造成大量代码的冗余,而为了有更好的结构又不得不用虚函数,否则一样逻辑的代码写那么多遍,改变需求的时候又要去更改源码,这样维护起来又很麻烦。
那么如何在效率和编码风格之间建立一个平衡点呢?
首先,性能问题是相对的,程序遵循二八定律,也就是说20%在热区上的代码(频繁调用)和80%不在热区上的代码,不在热区上的代码,无论你怎么优化,对程序性能的改善都几乎没有帮助。
但是优化造成代码可读性下降,这是得不偿失的。
再者,硬件是廉价的,程序员是昂贵的,编写复杂、充满技巧的程序,还要保证可靠不出错,这个花费比节约下来一点硬件来说,后者完全不值一提。更何况,随着时间的推移,代码维护成本越来越大,而硬件的成本越来越低。
就虚函数这个来说,是有代替的做法,远的不说,就说微软的MFC,人人都知道的东西,用了消息映射宏代替了虚函数,是提高了效率,但是人家开发环境可以自动生成和维护这些宏代码啊,要是没有这一点,谁愿意去写那种人都看不懂的东西。