C++ 在C+中加速复数乘法+;

C++ 在C+中加速复数乘法+;,c++,C++,我有一些将复数相乘的代码,并且注意到它经常被调用:也就是说,复数相乘不是内联的 我正在使用g++7.5版、-O3和-ffast math进行编译 它与类似,只是在使用-ffast math编译时问题仍然存在。因为我不需要检查参数是“代码> INF< /COD>还是楠< /代码>,我正在考虑自己做一个非常简单的复杂类,而不需要这样的检查来允许乘法被内联,但是考虑到我缺乏C++的熟练度,并且读过之后,我认为这会适得其反。 那么,有没有一种方法可以改变我的代码或编译过程,这样我就可以继续使用std::

我有一些将复数相乘的代码,并且注意到它经常被调用:也就是说,复数相乘不是内联的

我正在使用
g++
7.5版、
-O3
-ffast math
进行编译

它与类似,只是在使用-ffast math编译时问题仍然存在。因为我不需要检查参数是“代码> INF< /COD>还是<代码>楠< /代码>,我正在考虑自己做一个非常简单的复杂类,而不需要这样的检查来允许乘法被内联,但是考虑到我缺乏C++的熟练度,并且读过之后,我认为这会适得其反。
那么,有没有一种方法可以改变我的代码或编译过程,这样我就可以继续使用
std::complex
,但是可以内联乘法?

你的问题可以包括一个演示问题的例子吗?@1201程序不容易。我尝试的每个简单示例在未进行优化的情况下编译时都会出现mulxc3,但当打开--ffast math标志时,这种情况就会消失。可能至少需要几个小时才能确定代码的哪一部分阻止内联。我将尝试这样做,一旦找到该部分,我将编辑我的问题,但与此同时,任何形式的回答“[某种类型的操作]将防止在[某些上下文]中发生muldc3的内联”如果可能的话,我更愿意使用std::complex,因为可移植性很重要,在某个时候,我将不得不在不同的操作系统上工作,使用不同的编译器或版本,除非您已经进行了分析,并获得了证据证明复数乘法是一个性能瓶颈(与“经常执行”不同,这不是一回事),我建议不要太担心操作是否是内联的。现代编译器在根据需要优化代码方面做得相当好——诚然并不完美,而且发出的代码并不总是直观的。如果你只是编写代码,而没有比“我想我可以做得更快”更有力的事例,那么你的“手动转为内联”版本的效率肯定会比编译器已经为你做的效率低。你能把你的问题包含在一个说明问题的例子中吗?@1201程序并不容易。我尝试的每个简单示例在未进行优化的情况下编译时都会出现mulxc3,但当打开--ffast math标志时,这种情况就会消失。可能至少需要几个小时才能确定代码的哪一部分阻止内联。我将尝试这样做,一旦找到该部分,我将编辑我的问题,但与此同时,任何形式的回答“[某种类型的操作]将防止在[某些上下文]中发生muldc3的内联”如果可能的话,我更愿意使用std::complex,因为可移植性很重要,在某个时候,我将不得不在不同的操作系统上工作,使用不同的编译器或版本,除非您已经进行了分析,并获得了证据证明复数乘法是一个性能瓶颈(与“经常执行”不同,这不是一回事),我建议不要太担心操作是否是内联的。现代编译器在根据需要优化代码方面做得相当好——诚然并不完美,而且发出的代码并不总是直观的。如果编写代码时没有比“我想我可以做得更快”更有力的事例,那么很有可能您的“手动转为内联”版本的效率会低于编译器已经为您提供的效率。