Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program transfer_ex
- implicit none
- REAL, SAVE :: & ! timer indices
- itim_start_tot, itim_end_tot, &
- itim_start, itim_end
- INTEGER(kind=1), allocatable, target :: idata(:)
- character(len=1) :: ydata(1000000000)
- integer :: length
- CALL CPU_TIME(itim_start_tot)
- ! set ydata to constant value 'a'
- CALL CPU_TIME(itim_start)
- ydata = 'a'
- CALL CPU_TIME(itim_end)
- PRINT *, "T set ydata :", itim_end - itim_start
- ! get size of idata
- CALL CPU_TIME(itim_start)
- length = size(transfer(ydata, idata))
- CALL CPU_TIME(itim_end)
- PRINT *, "T transfer 1 :", itim_end - itim_start
- ! allocate idata
- CALL CPU_TIME(itim_start)
- allocate(idata(length))
- CALL CPU_TIME(itim_end)
- PRINT *, "T alloc :", itim_end - itim_start
- ! transfer ydata to idata
- CALL CPU_TIME(itim_start)
- idata = transfer(ydata, idata)
- CALL CPU_TIME(itim_end)
- PRINT *, "T transfer 2 :", itim_end - itim_start
- CALL CPU_TIME(itim_end_tot)
- PRINT *, "T total :", itim_end_tot - itim_start_tot
- print *, ''
- print *, 'ydata :', ydata(1:5)
- print *, 'idata :', idata(1:5)
- print *, 'loc :', loc( ydata ), loc( idata )
- ! clean up
- deallocate(idata)
- end program transfer_ex
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement