Fortran 复杂类型 VS C++ <complex> 类性能



我想写一些性能敏感的数字代码,涉及长公式和复数。考虑一些简单的东西,比如a=(b+c)*(d+e+f)。我更喜欢使用c++(它有std::complex类),但我担心编译后的代码可能会创建临时类对象来保存中间值b+ C、d+e和d+e+f,从而导致速度变慢。另一方面,Fortran具有原生复杂类型,这可能会导致更好的编译器优化。代码是多维数值积分,性能瓶颈是对被积者的评价。

现代c++编译器(如Intel的)在优化方面足够好,这实际上不是一个问题吗?

所有Fortran能做的(也是)就是模拟这个类型。
没有用于复数的本机机器类型(至少在x86上)。

你关心的是一些堆栈字节的临时使用,就是这样。
如果没有其他理由保留它,甚至堆栈大小调整也可以优化掉。
没有什么比Fortran做得更好了。

(Gcc和Clang一般不比Intel差。

最新更新