Private cfb1 As CFileBuff
Private cfb2 As CFileBuff
Private fh1 As Long
Private fh2 As Long
Private Sub Command1_Click()
Dim fn1 As String
Dim fn2 As String
Dim fn3 As String
Dim fn4 As String
Dim ch As Byte
Dim i As Long
Dim st1 As Single, et1 As Single
Dim st2 As Single, et2 As Single
Dim st3 As Single, et3 As Single
Dim st4 As Single, et4 As Single
Dim st5 As Single, et5 As Single
st1 = Timer
Set cfb1 = New CFileBuff
Set cfb2 = New CFileBuff
If cfb1.Create(fn1) = True Then
cfb2.Create (fn2)
Do
If cfb1.GetByte(ch) = 1 Then
cfb2.PutByte ch
Else
Exit Do
End If
Loop While cfb1.FEof = False
Else
Debug.Print "Error Open File!"
End If
Set cfb1 = Nothing
Set cfb2 = Nothing
et1 = Timer
st2 = Timer
fh1 = FreeFile(0)
Open fn1 For Binary As fh1
fh2 = FreeFile(0)
Open fn3 For Binary As fh2
Do
Get fh1, , ch
Put fh2, , ch
Loop While EOF(fh1) = False
Close fh1
Close fh2
et2 = Timer
'===================================
st3 = Timer
fh1 = FreeFile(0)
Open fn1 For Binary As fh1
fh2 = FreeFile(0)
Open fn4 For Binary As fh2
Const MAX_BUF_SIZE As Long = 1024& * 1024&
Dim nBufSize As Long
Dim bBuf() As Byte
Dim nFileLen As Long
Dim nCurPos As Long
nFileLen = FileLen(fn1)
nBufSize = nFileLen
If (nBufSize > MAX_BUF_SIZE) Then nBufSize = MAX_BUF_SIZE
ReDim bBuf(MAX_BUF_SIZE - 1)
For nCurPos = 0 To nFileLen - 1 Step MAX_BUF_SIZE
If nFileLen - nCurPos < MAX_BUF_SIZE Then
ReDim bBuf(nFileLen - nCurPos - 1)
End If
Get #fh1, , bBuf
Put #fh2, , bBuf
Next
Close fh1
Close fh2
et3 = Timer
Const RANDOM_COUNT = 1000000
'===================================
st4 = Timer
Set cfb1 = New CFileBuff
If cfb1.Create(fn1) = True Then
For i = 0 To RANDOM_COUNT
cfb1.FSeek Rnd * nFileLen, FS_BEGIN
cfb1.GetByte ch
Next
End If
Set cfb1 = Nothing
et4 = Timer
st5 = Timer
fh1 = FreeFile(0)
Open fn1 For Binary As fh1
nFileLen = FileLen(fn1)
For i = 0 To RANDOM_COUNT
Seek #fh1, Rnd * nFileLen
Get #fh1, , ch
Next
Close fh1
Close fh2
et5 = Timer