From a4ae07416a63671ce93bc7d81ea9a3ca4e01f55c Mon Sep 17 00:00:00 2001 From: nonamethanks Date: Sun, 7 Mar 2021 17:49:38 +0100 Subject: [PATCH] Optimize Sources::Strategies.find() Use lazy.map instead of map, so that we do not run every single strategy's match method for every source --- app/logical/sources/strategies.rb | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/logical/sources/strategies.rb b/app/logical/sources/strategies.rb index 895a9a6bd..c77b62689 100644 --- a/app/logical/sources/strategies.rb +++ b/app/logical/sources/strategies.rb @@ -3,24 +3,24 @@ module Sources def self.all [ Strategies::Pixiv, - Strategies::Fanbox, - Strategies::NicoSeiga, Strategies::Twitter, + Strategies::Tumblr, + Strategies::NicoSeiga, Strategies::Stash, # must come before DeviantArt Strategies::DeviantArt, - Strategies::Tumblr, - Strategies::ArtStation, - Strategies::Nijie, - Strategies::Mastodon, Strategies::Moebooru, + Strategies::Nijie, + Strategies::ArtStation, Strategies::HentaiFoundry, + Strategies::Fanbox, + Strategies::Mastodon, Strategies::Weibo, Strategies::Newgrounds ] end def self.find(url, referer = nil, default: Strategies::Null) - strategy = all.map { |strategy| strategy.new(url, referer) }.detect(&:match?) + strategy = all.lazy.map { |s| s.new(url, referer) }.detect(&:match?) strategy || default&.new(url, referer) end