aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-08-07 15:37:41 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-08-07 15:58:41 -0700
commitcf78745271798e5c5af8c254a48f1803851e86f2 (patch)
tree4d744c5826712cfabd2db41263422571f4b3fb54
parent52865750da82eb91b71a66fa126ab55ee055f9a1 (diff)
downloadbun-cf78745271798e5c5af8c254a48f1803851e86f2.tar.gz
bun-cf78745271798e5c5af8c254a48f1803851e86f2.tar.zst
bun-cf78745271798e5c5af8c254a48f1803851e86f2.zip
[misc] Microptimize directory tree walker
-rw-r--r--src/walker_skippable.zig21
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 => {},