FileWrite, ciclo For, o semplicemente siamo fuori strada, scrittura di un file binario

« Older   Newer »
  Share  
M@croLino
CAT_IMG Posted on 12/9/2019, 01:38     +1   -1




Salve,

dopo anni ho ripreso in mano questo linguaggio e volevo divertirmi scrivendo un po di codice.

Questa sera pensavo ad una funzione che continuasse a scrivere file finché tutto il drive non fosse occupato,

ma ho notato che la funzione FileWrite() è tremendamente lenta... o forse è il ciclo For che rallenta in modo pazzesco tutto il sistema?

Il test mi riporta 28 secondi per scrivere 2 file da 8 MB ciascuno.

Qualcuno sa se ci sono metodi più veloci per scrivere dei file su disco con dati casuali in binario?

Il codice in questione è il seguente

CODICE
_Avvia_ClearCluster()

Func _Avvia_ClearCluster( $sPercorso = "R:\TEMP\ClearCluster\" )

       Local        $iTimerInitRandom        = TimerInit()
       Local        $iByteCluster                = 4096
       Local        $aArray[$iByteCluster+1], _                ; Contenuto random che scriveremo
                       $iNumeroFileScritti = 0                        ; numero incrementale dei file scritti
       $aArray[0]                = $iByteCluster
       $flag_ClearClusterAvviato = True
       While $flag_ClearClusterAvviato And $iNumeroFileScritti < 2
               Local $sNomeFile        = StringRight("CC-00000000"&$iNumeroFileScritti+1,12)
               Local $hFile                = FileOpen( $sPercorso&$sNomeFile, 2+8+16)
               If $hFile == -1 Then
                       MsgBox(0,"","ERR")
                       ExitLoop
               Else
                       Local $iNumeroClusterPerFile        = 256
                       For $k = 1 To $iNumeroClusterPerFile

                               ; scrivo tutto l'array (1 cluster completo)
                               For $iByte = 1 To $aArray[0]
                                               ; === crittografia non reversibile ===
                                               Local $iRandom = Random(1,$aArray[0],1)
                                               $aArray[ $iRandom ] = $aArray[ $iRandom ] + TimerDiff($iTimerInitRandom)
                                               ; === crittografia non reversibile ===
                                       $flag_ClearClusterAvviato = FileWrite( $hFile, $aArray[ $iRandom ] ) ; scrive 8 byte alla volta ( per un VarGetType() == double )
                                       If Not $flag_ClearClusterAvviato Then ExitLoop
                               Next
                               ToolTip($k,5,5)
                               If Not $flag_ClearClusterAvviato Then ExitLoop
                       Next
                       FileClose($hFile)
               EndIf
               $iNumeroFileScritti += 1
       WEnd
       MsgBox(0,"","Minuti: "& StringFormat("%.2f", TimerDiff( $iTimerInitRandom )/ 1000 ) /60 )
       DirRemove( $sPercorso, 1 )
       ToolTip("")
EndFunc
 
Top
CAT_IMG Posted on 11/1/2020, 17:41     +1   -1

So implementare gli object

Group:
Admin
Posts:
1,215
Reputazione:
+150

Status:


Ciao!

Temo non ci sia nulla da fare: 28 secondi per 8MB di dati binari in linguaggio AutoIt è addirittura meglio di ciò che mi sarei aspettato :)
 
Top
Doch88
CAT_IMG Posted on 16/1/2020, 11:47     +1   -1




CITAZIONE (‡ (dd) @ 11/1/2020, 17:41) 
Ciao!

Temo non ci sia nulla da fare: 28 secondi per 8MB di dati binari in linguaggio AutoIt è addirittura meglio di ciò che mi sarei aspettato :)

Oh, qualcuno dei vecchi utenti è ancora vivo allora, mi ero quasi scordato di questo forum. Sembra passata un'eternità
 
Top
Hpmezzo
CAT_IMG Posted on 1/3/2020, 19:43     +1   -1




Ragazzi! Ogni tanto anche io vi penso! Ne e passato di tempo!!
 
Top
CAT_IMG Posted on 2/3/2020, 16:45     +1   -1

So implementare gli object

Group:
Admin
Posts:
1,215
Reputazione:
+150

Status:


CITAZIONE (Hpmezzo @ 1/3/2020, 19:43) 
Ragazzi! Ogni tanto anche io vi penso! Ne e passato di tempo!!

In home ci sono in rosso le info per entrare nel gruppo Telegram :)
 
Top
4 replies since 12/9/2019, 01:38   72 views
  Share