M@croLino |
|
| 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
|
| |