Results:
0
Time for integer: 0.281250000
0.00000000
Time for integer(transfer): 2.10937500
0.00000000
Time for integer(cast by implicit-external): 0.562500000
0.00000000 | !> Reference: https://refactoringguru.cn/design-patterns/iterator/go/example | |
| module iterator_module | |
| use, intrinsic :: iso_fortran_env, only: int8 | |
| implicit none | |
| private | |
| public :: user_t, user_collection_t, user_iterator_t, iterator_t | |
| !> Abstract types |
| module builder_module | |
| use, intrinsic :: iso_fortran_env, only: int8 | |
| implicit none | |
| private | |
| public :: ibuilder_t, director_t, house_t, get_builder | |
| type, abstract :: ibuilder_t | |
| contains |
Results:
0
Time for integer: 0.281250000
0.00000000
Time for integer(transfer): 2.10937500
0.00000000
Time for integer(cast by implicit-external): 0.562500000
0.00000000 | ! https://github.com/JuliaLang/Microbenchmarks/blob/master/perf.f90 | |
| module types | |
| implicit none | |
| private | |
| public :: dp, i64 | |
| integer, parameter :: dp = kind(0.d0) ! double precision | |
| integer, parameter :: i64 = selected_int_kind(18) ! at least 64-bit integer |
| !> 4 阶 Runge-Kutta 法 | |
| module runge_kutta_module | |
| use, intrinsic :: iso_fortran_env, only: wp => real32 | |
| implicit none | |
| abstract interface | |
| !> `fcn` 计算 ODE 的导数 | |
| subroutine fcn(t, y, yp) | |
| import wp |
| !> 4 阶 Runge-Kutta 法 | |
| module runge_kutta_module | |
| use, intrinsic :: iso_fortran_env, only: wp => real32 | |
| implicit none | |
| abstract interface | |
| !> `fcn` 计算 ODE 的导数 | |
| subroutine fcn(t, y, yp) | |
| import wp |