PROGRAM SLINGA1 ! Undersökning av hastigheten vid skrivning av ett stort fält ! på olika sätt till skivminne. IMPLICIT NONE INTEGER, PARAMETER :: DIM = 10000 INTEGER :: Cykler_per_sekund, Startcykel, Slutcykel INTEGER :: I REAL, DIMENSION(1:DIM) :: FAELT REAL :: TID ! Initiering av fältet CALL RANDOM_SEED CALL RANDOM_NUMBER(FAELT) ! Initiering av tidmätning CALL SYSTEM_CLOCK(COUNT_RATE=Cykler_per_sekund) ! Metod 1 med explicit slinga OPEN(UNIT=1,FILE='slask1',STATUS='REPLACE',FORM='UNFORMATTED') CALL SYSTEM_CLOCK(COUNT=Startcykel) DO I = 1, DIM WRITE(1) FAELT(I) END DO CALL SYSTEM_CLOCK(COUNT=Slutcykel) TID = REAL(Slutcykel - Startcykel)/REAL(Cykler_per_sekund) WRITE(*,*) ' Tid i metod 1 = ', TID, ' sekunder' CLOSE(1) ! Metod 2 med implicit slinga OPEN(UNIT=2,FILE='slask2',STATUS='REPLACE',FORM='UNFORMATTED') CALL SYSTEM_CLOCK(COUNT=Startcykel) WRITE(2) (FAELT(I), I = 1, DIM) CALL SYSTEM_CLOCK(COUNT=Slutcykel) TID = REAL(Slutcykel - Startcykel)/REAL(Cykler_per_sekund) WRITE(*,*) ' Tid i metod 2 = ', TID, ' sekunder' CLOSE(2) ! Metod 3 helt implicit OPEN(UNIT=3,FILE='slask3',STATUS='REPLACE',FORM='UNFORMATTED') CALL SYSTEM_CLOCK(COUNT=Startcykel) WRITE(3) FAELT CALL SYSTEM_CLOCK(COUNT=Slutcykel) TID = REAL(Slutcykel - Startcykel)/REAL(Cykler_per_sekund) WRITE(*,*) ' Tid i metod 3 = ', TID, ' sekunder' CLOSE(3) END PROGRAM SLINGA1