所以,我想知道是否最好分别处理数组的实部和虚部而不是复杂的变量来提高性能。例如,
program test
implicit none
integer,parameter :: n = 1e8
real(kind=8),parameter :: pi = 4.0d0*atan(1.0d0)
complex(kind=8),parameter :: i_ = (0.0d0,1.0d0)
double complex :: s
real(kind=8) :: th(n),sz, t1,t2, s1,s2
integer :: i
sz = 2.0d0*pi/n
do i=1,n
th(i) = sz*i
enddo
call cpu_time(t1)
s= sum(exp(th*i_))
call cpu_time(t2)
print *, t2-t1
call cpu_time(t1)
s1 = sum(cos(th))
s2 = sum(sin(th))
call cpu_time(t2)
print *, t2-t1
end program test
以及所需要的时间
3.7041089999999999
2.6299830000000002
因此,拆分计算确实需要更少的时间。这是一个非常简单的计算。但是我有一些很长的计算并且使用复杂的变量可以提高可读性并且确实需要更少的代码行。但它会牺牲我的代码的性能吗?还是总是建议分开处理实部和虚部?