constexpr字符串vs const字符串

帕帕迪·哈蒂(PapaDiHatti)

我们正在将一些代码从c ++ 03迁移到c ++ 14,并且希望在使用c ++ 14功能的地方获得一些性能提升。现在在我们的一个项目中,我们正在基于列名来解析csv列名在一个头文件中声明,如下所示:

const string ITEM_NAME = "Item Name";
const string ITEM_ID = "Item Id";

有上百个这样的常量,所以我想知道的是,如果我将上述代码更改为以下内容,是否会获得显着的性能提升:

constexpr string ITEM_NAME = "Item Name";
constexpr string ITEM_ID = "Item Id";

还有,因为它们需要存储在只读存储器中,所以我们在二进制文件中可以拥有的constexpr数量没有限制吗?

编译器是否还会自动优化旧的c ++ 03代码并将const变量也放置在只读内存中,所以这样做不值得吗?

迪特里希·埃普

使用它没有任何好处,constexpr除了允许您在无法评估非constexpr表达式的某些情况下评估表达式

const除非您有constexpr工作和const不工作的特定原因否则您应该坚持使用

如果您确实需要只读存储器中的变量,那么两者const也没有constexpr什么不同。我只希望琐碎的类型可靠地放置在只读内存中,并且std::string肯定不是琐碎的类型。(“专有类型”是一个技术术语。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章