工具/软件:
我们为 TI C7x DSP 处理器 (C7120) 等开发软件。
我有一个关于在 C++中使用 constexpr 的问题。
您的文档说:
(请参阅 www.ti.com/.../spruiv4d.pdf 29 页、ts = 1760348901999&ref_url=https%253A%252F%252Fwww.ti.com%252F)
“以下功能提高了性能、应尽可能使用:
•使用 const
•使用 constexpr
•按引用传递对象、而不是按值传递对象
•可在编译时与运行时计算的构造和表达式
然而、当我为一个类创建 constexpr 构造函数时、生成的针对 C7x 进行优化的代码会消耗更多的内存。
具体来说:
1、代码使用 constexpr 构造函数编译,但当这样的对象被初始化时,除了对象的内存之外,相同的量被重新分配,并使用一个密码名称(可能是指一些临时对象),例如`$P$T676美元`。 当我们从构造函数之前删除 constexpr 时、不再分配额外的内存。
2、当使用 constexpr 构造函数为自定义类创建 constexpr 成员变量时,代码会再次编译 — 但如果我们引用相同的成员变量,编译就会失败,表示我们引用了临时变量。
自定义(非 pod)类的 constexpr 对象似乎以意外的方式处理。
我有什么问题吗? 或者、C7x 编译器在内存使用方面、使用 constexpr 构造函数或 constexpr 成员对象来处理类的效率是否低下?