我必须制定出一些小型框架,这些框架将被我们的一些应用程序使用。除此之外,该框架将在同一个应用程序中多次使用,但配置略有不同。配置的“本质”比仅具有一些配置选项和一些设置器更复杂。在实践中,应用程序必须提供自己的数据结构,这些数据结构将被合并到框架中,使其更加复杂。
我在编写框架时可以看到以下4种选择:
在选择一个好的替代方案时应该考虑哪些论点?
这些替代方案中的一些是否比其他方案更好,为什么?
请注意,就我而言,性能是最重要的。
答案 0 :(得分:1)
如果峰值性能确实是一个问题,我会避免运行时多态性,这不仅是因为虚拟函数调用的vtable查找,而是因为:
宏往往难以调试,所以除非你需要能够进行字符串连接,这在某些情况下是模板的独特优势,我个人会使用静态多态技术来寻找基于模板的解决方案,就像你一样表示,curiously recurring template pattern和/或(如果适用)模板专业化处理自定义数据结构。
答案 1 :(得分:0)
使用特定于平台的头文件。这是一个额外的选择,类似于宏,但没有瑕疵。
如果必须使用宏,请仅在包含特定于平台的标头的config标头内执行此操作。但通常只需定义特定于平台的结构并将其用作子对象就足够了。
答案 2 :(得分:0)
你的表现是什么意思?如果它是最终代码运行的性能,请记住,涉及虚函数的类继承的解决方案在调用时会产生很小的开销。
其他解决方案会导致项目构建阶段产生额外开销,并且由于代码“重复”(通过模板混合,自定义代码生成或宏扩展)而导致可执行文件稍大一些。