我有一个备份程序,已经在内部使用了两年了,我希望提高性能。
让我们以我的计算机为例:
在我的机器上,生成它需要评估的19,000个文件的初始列表大约需要7-10秒。
然后,大约需要25到30秒的时间将该文件列表与以前备份到备份位置的文件列表进行比较。比较严格地取决于上次从系统备份到以前备份的版本的修改时间。这样,它只执行增量备份。
我最初只是存储完整的文件名,然后创建一个文件信息链接来获取我需要的数据。
此后,我创建了一个结构,其中包含了我需要的文件中的5个字段,并将列表更改为一个字典,其中的键名是完整的文件名,值就是结构。
当我将数据存储在Arraylist、List或Dictionary中时,所花费的时间大致相同,因此,我的比较显然是密集型任务,而不是存储数据的方式。
我对你们的问题是,字典适合我存储的数据类型。所有的完整文件名都是唯一的,我真的不关心排序或备份数据的顺序。
下面是对列表和比较子的一些描述,它们似乎是最慢的:
私有子比较表()
For Each _file As KeyValuePair(Of String, fileInfoS) In _FileListSRC
Dim dest As String
Try
Dim fi As fileInfoS = _file.Value
If fi.FullName.Contains(p_UserProfile) Then
dest = fi.FullName.Replace(p_UserProfile & "\", p_BackupLocation)
Else
dest = fi.FullName.Replace(fi.FolderRootName, p_BackupLocation)
End If
If _FileListDES.ContainsKey(dest) Then
If fm.fileLastWriteCompare(fi.LastModified, dest) Then
_FileList.Add(fi.FullName, fi)
_totalSize = _totalSize + fi.Size
End If
Else
If Not fm.FileExists(fi.FullName) Then Continue For
_FileList.Add(fi.FullName, fi)
_totalSize = _totalSize + fi.Size
End If
Catch ex As Exception
End Try
Next再次感谢您的帮助。
约书亚
发布于 2013-03-22 18:51:22
字典对我来说是合适的,因为它使用散列来存储允许快速获取objects.does的数据,从而减少了您的处理时间?如果是的话,你关心的是什么?
https://stackoverflow.com/questions/15577681
复制相似问题