код
- Код: Выделить всё
For i = 0 To CountOfFilesInArchive - 1
Get FN, , FileNameInArchive
If i < CountOfFilesInArchive - 1 Then
Get FN, , ofs
Get FN, , FilesInArchive(i + 1).FileSize
FilesInArchive(i + 1).offset = ofs * 2048 'FilesInArchive(i).FileSize * 2048 + FilesInArchive(i).Offset
End If
FilesInArchive(i).FileName = getFileName_img(FileNameInArchive)
Set itmx = .Add(, , FilesInArchive(i).FileName)
itmx.SubItems(1) = Rasshirenie(FilesInArchive(i).FileName, 2))
itmx.SubItems(2) = MyF(Hex(FilesInArchive(i).offset))
itmx.SubItems(3) = FilesInArchive(i).FileSize * 2 & " kb"
Next i
на VB6 работает довольно быстро - 17000 элементов загружается примерно 8 секунд, а код
- Код: Выделить всё
For i = 0 To CountOfFilesInArchive - 1
frmMain.Tpb1.Value = i
FileGet(FN, FileNameInArchive)
If i < CountOfFilesInArchive - 1 Then
FileGet(FN, ofs)
FileGet(FN, FilesInArchive(i + 1).FileSize)
FilesInArchive(i + 1).offset = CStr(ofs * 2048)
End If
FilesInArchive(i).FileName = getFileName_img(FileNameInArchive)
itmx = .Add(FilesInArchive(i).FileName)
itmx.SubItems.Insert(1, New System.Windows.Forms.ListViewItem.ListViewSubItem(Nothing, Rasshirenie(FilesInArchive(i).FileName, 2)))
itmx.SubItems.Insert(2, New System.Windows.Forms.ListViewItem.ListViewSubItem(Nothing, MyF(Hex(CInt(FilesInArchive(i).offset)))))
itmx.SubItems.Insert(3, New System.Windows.Forms.ListViewItem.ListViewSubItem(Nothing, FilesInArchive(i).FileSize * 2 & " kb"))
Next i
на .NET, в который VS2005 автоматически перевел предыдущий код загружает те же 17000 элементов за 30-50 секунд
Откуда тормоза и как оптимизировать?