Kap*_*pil 3 c++ constexpr c++14
我们正在将一些代码从c ++ 03迁移到c ++ 14,并且只要有一些性能提升,我们就要使用c ++ 14特性.现在我们的一个项目中我们正在根据列名解析csv列名在一个头文件中声明,如下所示:
const string ITEM_NAME = "Item Name";
const string ITEM_ID = "Item Id";
Run Code Online (Sandbox Code Playgroud)
有这样的一百个常量,所以我想知道的是,如果我将上面的代码更改为这样的代码,是否有任何显着的性能增益:
constexpr string ITEM_NAME = "Item Name";
constexpr string ITEM_ID = "Item Id";
Run Code Online (Sandbox Code Playgroud)
由于需要将它们存储在只读存储器中,因此我们可以在二进制文件中使用constexpr的数量有任何限制吗?
编译器是否也自动优化旧的c ++ 03代码并将const变量也放在只读内存中,这种努力是不值得的?
使用没有任何优势,constexpr除了您可以在某些constexpr无法评估非表达式的上下文中评估表达式.
你应该坚持,const除非你有特定的理由为什么constexpr有效并且const不起作用.
如果你真的需要只读内存中的变量,那么它们既const不会也不constexpr会有任何不同.我只希望普通类型能够可靠地放在只读内存中,并且std::string肯定不是一个简单的类型.("琐碎型"是一个技术术语.)