From 6123e146194a733a4208e1d9a11325707b0c50f3 Mon Sep 17 00:00:00 2001 From: schneems Date: Fri, 1 Jul 2016 11:29:19 -0500 Subject: [PATCH] Backport #331 - Asset lookup 4x Faster in large directories With this patch using the benchmark script https://github.com/schneems/sprockets-3.x-performance-regressions: ``` 1500 lookups of the same asset took 2.900005 1500 lookups of 1500 different assets took 2.746331 ``` Without this patch using the benchmark script: ``` 1500 lookups of the same asset took 12.361615 1500 lookups of 1500 different assets took 12.627099 ``` Which is a 4x speed bump. --- lib/sprockets/resolve.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/sprockets/resolve.rb b/lib/sprockets/resolve.rb index d6cae616c..9ae14fb3e 100644 --- a/lib/sprockets/resolve.rb +++ b/lib/sprockets/resolve.rb @@ -178,6 +178,7 @@ def dirname_matches(dirname, basename) candidates = [] entries = self.entries(dirname) entries.each do |entry| + next unless File.basename(entry).start_with?(basename) name, type, _, _ = parse_path_extnames(entry) if basename == name candidates << [File.join(dirname, entry), type]