|
|
同一个程序,在linux下用Intel Fortran Complier编译后运行时间为4.9s, 然后到windows下用 Visual Fortran 编译后运行,居然要10.2s.
不知道是编译器的问题还是OS的问题 
附源码
[php]
program int_sin
implicit none
! Create a value DP that is the "kind" number of a double precision value
! We will use this value in our declarations and constants.
integer, parameter :: DP = kind(0.0D0)
! Declare a named constant for pi, specifying the kind type
real(DP), parameter :: pi = 3.141592653589793238_DP
! Declare interval begin and end
real(DP), parameter :: interval_begin = 0.0_DP
real(DP), parameter :: interval_end = 2.0_DP * pi
real(DP) :: step, sum, x_i
integer :: N, i, j
real clock_start, clock_finish
write (*,'(A)') " "
write (*,'(A)') " Number of | Computed Integral |"
write (*,'(A)') " Interior Points | |"
call cpu_time (clock_start)
do j=2,26
write (*,'(A)') "--------------------------------------"
N = 2**j
! Compute stepsize for N-1 internal rectangles
step = (interval_end - interval_begin) / real(N,DP);
! Approximate 1/2 area in first rectangle: f(x0) * (step/2)
sum = INTEG_FUNC(interval_begin) * (step / 2.0_DP)
do i=1,N-1
x_i = real(i,DP) * step
! Apply midpoint rule:
! Given length = f(x), compute the area of the
! rectangle of width step
sum = sum + (INTEG_FUNC(x_i) * step)
end do
! Add approximate area in last rectangle for f(xN) * (step/2)
sum = sum + (INTEG_FUNC(interval_end) * (step / 2.0_DP))
write (*,'(T5,I10,T18,"|",2X,1P,E14.7,T38,"|")') N, sum
end do
call cpu_time(clock_finish)
write (*,'(A)') "--------------------------------------"
write (*,'(A)') " "
write (*,*) "CPU Time = ",(clock_finish - clock_start), " seconds"
contains
! Function to integrate
real(DP) function INTEG_FUNC (x)
real(DP), intent(IN) :: x
INTEG_FUNC = abs(sin(x))
return
end function INTEG_FUNC
end program int_sin
[/php] |
|