gfortran是否比MATLAB更慢地生成随机数?

时间:2012-07-21 06:49:06

标签: matlab random fortran gfortran

我是Fortran的首次使用者,我正在通过抽样随机数(抑制输出)对Fortran与Matlab进行基本性能比较。使用MWE,在Fortran(.f95文件)中:

program main
  real(4) :: r
  integer i
  do i = 1,50000000
    call random_number(r)
  enddo
end program main

在MATLAB(.m文件)中:

for i = 1:50000000
  rand();
end

当我使用gfortran(v4.5.3)编译Fortran代码时,可执行文件的运行速度比MATLAB(r2011b)慢大约3倍。目前看来,这是预期的结果吗?

1 个答案:

答案 0 :(得分:4)

正如IanH指出的那样,你实际上在比较单精度和双精度。如果我将Fortran代码更改为双倍精度,我会得到额外的~2x减速。

速度差异的原因可能是Matlab和gfortran使用不同算法的不同实现:Matlab使用Mersenne twister PRNG,而gfortran使用George Marsaglia的KISS PRNG。

相关问题