我正在尝试编写一个 C++ 程序,它启动我在 x64 汇编程序中编写的函数。我想稍微加快速度(并利用 CPU 功能),所以我选择使用向量运算。
问题是,我必须将正弦乘以一个整数,所以我必须首先计算正弦。在 SSE/AVX 中可以做到这一点吗?我知道指令fsin,但它不仅在 FPU 中,而且它一次只计算 1 个正弦。所以我必须将它推入 FPU,调用fsin,将其从 FPU 弹出到内存,然后将其放入 AVX 寄存器。在我看来,这不值得这么麻烦。
我们假设我有一个看起来像这样的A类:
class A {
public:
public A(bool someFlag, Params someParams);
private:
vector<string> texts;
}
Run Code Online (Sandbox Code Playgroud)
我想提取初始化texts成员字段的逻辑.我想出了两个想法:
第一个想法 - 静态的私有成员函数,它将返回所需的文本向量.
A::A(bool someFlag, Params someParams) {
if (someFlag)
texts = createSomeTexts(someParams);
else
texts = createOtherTexts(someParams);
}
Run Code Online (Sandbox Code Playgroud)第二个想法-这将分配给文本类成员的期望矢量私有成员函数本身.
A::A(bool someFlag, Params someParams) {
if (someFlag)
createAndAssignSomeTexts(someParams);
else
createAndAssignOtherTexts(someParams);
}
Run Code Online (Sandbox Code Playgroud)当然,两个版本都能正确完成工作,但我想知道对于这些情况的建议方法是什么.此外,如果成员初始化需要更多参数(尤其是作为成员存储在类中的参数),则该方法应该更改.