爱德华EXE 2019-06-04 10:13 采纳率: 33.3%
浏览 302

C++服务端开发是不是应该减少使用虚函数?

刚入行不久,最近学习了设计模式后发现当前项目存在非常多的冗余部分,即相似的代码到处都是,需求一遍必须改源码。

但听说使用虚函数会有开销,尤其在游戏开发中,大量用户访问服务器,必定造成大量使用虚函数,造成的开销是不是更加大,那应该放弃使用虚函数而更多采用编译时多态吗?

这样编码就会造成大量代码的冗余,而为了有更好的结构又不得不用虚函数,否则一样逻辑的代码写那么多遍,改变需求的时候又要去更改源码,这样维护起来又很麻烦。

那么如何在效率和编码风格之间建立一个平衡点呢?

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-06-04 10:24
    关注

    首先,性能问题是相对的,程序遵循二八定律,也就是说20%在热区上的代码(频繁调用)和80%不在热区上的代码,不在热区上的代码,无论你怎么优化,对程序性能的改善都几乎没有帮助。
    但是优化造成代码可读性下降,这是得不偿失的。
    再者,硬件是廉价的,程序员是昂贵的,编写复杂、充满技巧的程序,还要保证可靠不出错,这个花费比节约下来一点硬件来说,后者完全不值一提。更何况,随着时间的推移,代码维护成本越来越大,而硬件的成本越来越低。
    就虚函数这个来说,是有代替的做法,远的不说,就说微软的MFC,人人都知道的东西,用了消息映射宏代替了虚函数,是提高了效率,但是人家开发环境可以自动生成和维护这些宏代码啊,要是没有这一点,谁愿意去写那种人都看不懂的东西。

    评论

报告相同问题?

悬赏问题

  • ¥15 chaquopy python 安卓
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题