PROGRAM SLINGA2 ! Undersökning av hastigheten vid skrivning av ett stort fält ! med olika format 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 ett tal per rad OPEN(UNIT=1,FILE='slask1',STATUS='REPLACE',FORM='FORMATTED') CALL SYSTEM_CLOCK(COUNT=Startcykel) WRITE(1,'(G13.6)') (FAELT(I), I = 1, DIM) 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 lämpligt antal tal per rad OPEN(UNIT=2,FILE='slask2',STATUS='REPLACE',FORM='FORMATTED') CALL SYSTEM_CLOCK(COUNT=Startcykel) WRITE(2,'(10G13.6)') (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(I), I = 1, DIM) CALL SYSTEM_CLOCK(COUNT=Slutcykel) TID = REAL(Slutcykel - Startcykel)/REAL(Cykler_per_sekund) WRITE(*,*) ' Tid i metod 3 = ', TID, ' sekunder' CLOSE(3) END PROGRAM SLINGA2