首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于将文件数据存储在字典或列表中的建议和比较的性能

关于将文件数据存储在字典或列表中的建议和比较的性能
EN

Stack Overflow用户
提问于 2013-03-22 18:44:13
回答 1查看 53关注 0票数 0

我有一个备份程序,已经在内部使用了两年了,我希望提高性能。

让我们以我的计算机为例:

在我的机器上,生成它需要评估的19,000个文件的初始列表大约需要7-10秒。

然后,大约需要25到30秒的时间将该文件列表与以前备份到备份位置的文件列表进行比较。比较严格地取决于上次从系统备份到以前备份的版本的修改时间。这样,它只执行增量备份。

我最初只是存储完整的文件名,然后创建一个文件信息链接来获取我需要的数据。

此后,我创建了一个结构,其中包含了我需要的文件中的5个字段,并将列表更改为一个字典,其中的键名是完整的文件名,值就是结构。

当我将数据存储在Arraylist、List或Dictionary中时,所花费的时间大致相同,因此,我的比较显然是密集型任务,而不是存储数据的方式。

我对你们的问题是,字典适合我存储的数据类型。所有的完整文件名都是唯一的,我真的不关心排序或备份数据的顺序。

下面是对列表和比较子的一些描述,它们似乎是最慢的:

  • _filelistSRC是在要备份的文件夹中找到的文件列表。
  • _fileListDES是备份文件夹中找到的文件列表。
  • _fileList是包含自上次备份以来已更改的文件的列表,应该进行备份。
  • fileInfoS是只包含每个文件所需信息的结构。
  • fm是一个具有我使用的常用文件管理方法的类。

私有子比较表()

代码语言:javascript
复制
           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

再次感谢您的帮助。

约书亚

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-22 18:51:22

字典对我来说是合适的,因为它使用散列来存储允许快速获取objects.does的数据,从而减少了您的处理时间?如果是的话,你关心的是什么?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15577681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档