Speedup VFS::partition

The task of `partition` function is to bin the flat list of paths into
disjoint filesets. Ideally, it should be incremental -- each new file
should be added to a specific fileset.

However, preliminary measurnments show that it is actually fast enough
if we just optimize this to use a binary search instead of a linear
scan.
This commit is contained in:
Aleksey Kladov
2020-06-19 15:07:32 +02:00
parent 902a9c6da7
commit b9f3c5d585
4 changed files with 30 additions and 11 deletions

View File

@@ -2,7 +2,7 @@
//! relative paths.
use std::{
convert::{TryFrom, TryInto},
ops,
io, ops,
path::{Component, Path, PathBuf},
};
@@ -46,6 +46,9 @@ impl TryFrom<&str> for AbsPathBuf {
}
impl AbsPathBuf {
pub fn canonicalized(path: &Path) -> io::Result<AbsPathBuf> {
path.canonicalize().map(|it| AbsPathBuf::try_from(it).unwrap())
}
pub fn as_path(&self) -> &AbsPath {
AbsPath::new_unchecked(self.0.as_path())
}