【问题标题】:Moving from void* and casting to an ABC with PVFs (will there be a speed hit?)从 void* 转换到带有 PVF 的 ABC(会不会影响速度?)
【发布时间】:2011-09-19 13:09:12
【问题描述】:

我刚刚继承了(咳咳)一个 QNX 实时项目,它使用 void*/downcasting/case 语句机制来处理消息传递。我宁愿切换到具有纯虚函数的抽象基类,但我想知道原始解决方案是否出于速度原因是这样完成的?它看起来很像它最初是用 C 编写的,并在某个时候转移到了 C++,所以我猜这可能是它背后的原因。

对此的任何想法表示赞赏。我不想让代码变得漂亮、安全和整洁,然后在测试期间因为性能原因而失败。

【问题讨论】:

  • “我想知道最初的解决方案是不是出于速度原因而这样做的” -- C++ 出于某种原因经常充满关于“速度”的误解和彻头彻尾的谎言和性能。如果它是从 C 到 C++,那可能就是为什么会这样;但也可能只是他们认为自己对语言的了解比实际了解的多

标签: c++ real-time qnx


【解决方案1】:

我怀疑性能是否会成为问题。如果 switch/case 中有足够多的不同值,您的编译器甚至可能不会将其优化为跳转表,从而设置虚拟调度可能比 switch

如果纯虚拟界面在设计方面有意义,我肯定会采用这种方式(如果您真的担心,可以进行原型设计和分析)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-20
    • 2017-03-05
    • 1970-01-01
    • 2013-01-23
    • 2013-11-22
    • 2019-09-18
    • 1970-01-01
    • 2022-10-04
    相关资源
    最近更新 更多