mirror of
https://github.com/octoleo/restic.git
synced 2024-12-23 03:18:55 +00:00
Fix quadratic time complexity of Snapshot.HasPaths
This commit is contained in:
parent
f481ad64c8
commit
d0f1060df7
@ -237,19 +237,14 @@ func (sn *Snapshot) HasTagList(l []TagList) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
func (sn *Snapshot) hasPath(path string) bool {
|
|
||||||
for _, snPath := range sn.Paths {
|
|
||||||
if path == snPath {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// HasPaths returns true if the snapshot has all of the paths.
|
// HasPaths returns true if the snapshot has all of the paths.
|
||||||
func (sn *Snapshot) HasPaths(paths []string) bool {
|
func (sn *Snapshot) HasPaths(paths []string) bool {
|
||||||
|
m := make(map[string]struct{}, len(sn.Paths))
|
||||||
|
for _, snPath := range sn.Paths {
|
||||||
|
m[snPath] = struct{}{}
|
||||||
|
}
|
||||||
for _, path := range paths {
|
for _, path := range paths {
|
||||||
if !sn.hasPath(path) {
|
if _, ok := m[path]; !ok {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user