C++ 复数C++;实施绩效
我有一个花大量时间做复杂指数演算的程序。 它目前使用C99数学库中的C++ 复数C++;实施绩效,c++,visual-c++,gcc,C++,Visual C++,Gcc,我有一个花大量时间做复杂指数演算的程序。 它目前使用C99数学库中的cexp。(我将其称为复杂) 但我必须让程序也在windows下运行 ATM我使用MinGW,但如果性能更好,我想切换到MSVC。 然而,MSVC不提供C99支持,所以它必须是C++复杂模板类实现(我将称之为复杂);还包括_complextypedef,但没有cexp,因此我必须使用sin和cos“手动”计算它 所以我想知道,从性能角度看,哪一个更好: 呆在MinGW,使用复合材料。我研究了libc6的源代码,看起来不管怎样都
cexp
。(我将其称为复杂)
但我必须让程序也在windows下运行
ATM我使用MinGW,但如果性能更好,我想切换到MSVC。
然而,MSVC不提供C99支持,所以它必须是C++复杂模板类实现(我将称之为复杂);还包括_complextypedef,但没有cexp
,因此我必须使用sin和cos“手动”计算它
所以我想知道,从性能角度看,哪一个更好:
- 呆在MinGW,使用复合材料。我研究了libc6的源代码,看起来不管怎样都有对sin和cos的调用
- 使用MSVC,使用复杂的实现
- 使用MSVC,使用_复杂的实现
谢谢。你到底在做什么,需要调用这么多的
xexp()
?傅里叶变换,但我不能使用任何FFT库。而我正处在一个项目的最后期限,所以这基本上只是“锦上添花”。@user1495627哈!我怀疑这样的事情。如果你在做FFT,你应该缓存你的旋转因子,而不是一遍遍地计算它们。你不需要改变算法来缓存旋转因子。如果您要实现任何FFT并关心性能,那么您要做的第一件事就是预计算并缓存旋转因子。缓存旋转因子所带来的性能提升可能会让您从更快的cexp()
中获得的任何东西相形见绌。为什么只考虑MSVC?如果性能很重要,那么不妨试试英特尔编译器。