diff options
| author | 2022-08-07 15:37:41 -0700 | |
|---|---|---|
| committer | 2022-08-07 15:58:41 -0700 | |
| commit | cf78745271798e5c5af8c254a48f1803851e86f2 (patch) | |
| tree | 4d744c5826712cfabd2db41263422571f4b3fb54 | |
| parent | 52865750da82eb91b71a66fa126ab55ee055f9a1 (diff) | |
| download | bun-cf78745271798e5c5af8c254a48f1803851e86f2.tar.gz bun-cf78745271798e5c5af8c254a48f1803851e86f2.tar.zst bun-cf78745271798e5c5af8c254a48f1803851e86f2.zip | |
[misc] Microptimize directory tree walker
| -rw-r--r-- | src/walker_skippable.zig | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/src/walker_skippable.zig b/src/walker_skippable.zig index b52895b51..cc3f3fa22 100644 --- a/src/walker_skippable.zig +++ b/src/walker_skippable.zig @@ -38,15 +38,30 @@ pub fn next(self: *Walker) !?WalkerEntry { if (try top.iter.next()) |base| { switch (base.kind) { .Directory => { - if (std.mem.indexOfScalar(u64, self.skip_dirnames, std.hash.Wyhash.hash(self.seed, base.name)) != null) continue; + if (std.mem.indexOfScalar( + u64, + self.skip_dirnames, + // avoid hashing if there will be 0 results + if (self.skip_dirnames.len > 0) std.hash.Wyhash.hash(self.seed, base.name) else 0, + ) != null) continue; }, .File => { - if (std.mem.indexOfScalar(u64, self.skip_filenames, std.hash.Wyhash.hash(self.seed, base.name)) != null) continue; + if (std.mem.indexOfScalar( + u64, + self.skip_filenames, + // avoid hashing if there will be 0 results + if (self.skip_filenames.len > 0) std.hash.Wyhash.hash(self.seed, base.name) else 0, + ) != null) continue; }, // we don't know what it is for a symlink .SymLink => { - if (std.mem.indexOfScalar(u64, self.skip_all, std.hash.Wyhash.hash(self.seed, base.name)) != null) continue; + if (std.mem.indexOfScalar( + u64, + self.skip_all, + // avoid hashing if there will be 0 results + if (self.skip_all.len > 0) std.hash.Wyhash.hash(self.seed, base.name) else 0, + ) != null) continue; }, else => {}, |
