* [sup-devel] [PATCH] pre-expand source URIs
@ 2011-01-18 18:26 Sascha Silbe
2011-01-19 3:40 ` Rich Lane
0 siblings, 1 reply; 2+ messages in thread
From: Sascha Silbe @ 2011-01-18 18:26 UTC (permalink / raw)
To: sup-devel
Expand the URI for each source resp. each CLI argument only once. This brings
down the time taken by sup-sync for parsing source arguments from 45s to
less than 2 seconds for a list of 13 sources on my XO-1.5.
Signed-off-by: Sascha Silbe <sascha-pgp@silbe.org>
---
lib/sup/maildir.rb | 5 +++--
lib/sup/mbox.rb | 6 ++++--
lib/sup/source.rb | 6 +++++-
3 files changed, 12 insertions(+), 5 deletions(-)
diff --git a/lib/sup/maildir.rb b/lib/sup/maildir.rb
index def2ac3..0c3061c 100644
--- a/lib/sup/maildir.rb
+++ b/lib/sup/maildir.rb
@@ -10,7 +10,8 @@ class Maildir < Source
yaml_properties :uri, :usual, :archived, :id, :labels
def initialize uri, usual=true, archived=false, id=nil, labels=[]
super uri, usual, archived, id
- uri = URI(Source.expand_filesystem_uri(uri))
+ @expanded_uri = Source.expand_filesystem_uri(uri)
+ uri = URI(@expanded_uri)
raise ArgumentError, "not a maildir URI" unless uri.scheme == "maildir"
raise ArgumentError, "maildir URI cannot have a host: #{uri.host}" if uri.host
@@ -24,7 +25,7 @@ class Maildir < Source
def file_path; @dir end
def self.suggest_labels_for path; [] end
- def is_source_for? uri; super || (URI(Source.expand_filesystem_uri(uri)) == URI(self.uri)); end
+ def is_source_for? uri; super || (uri == @expanded_uri); end
def store_message date, from_email, &block
stored = false
diff --git a/lib/sup/mbox.rb b/lib/sup/mbox.rb
index 2806cb3..af118c3 100644
--- a/lib/sup/mbox.rb
+++ b/lib/sup/mbox.rb
@@ -18,7 +18,8 @@ class MBox < Source
case uri_or_fp
when String
- uri = URI(Source.expand_filesystem_uri(uri_or_fp))
+ @expanded_uri = Source.expand_filesystem_uri(uri_or_fp)
+ uri = URI(@expanded_uri)
raise ArgumentError, "not an mbox uri" unless uri.scheme == "mbox"
raise ArgumentError, "mbox URI ('#{uri}') cannot have a host: #{uri.host}" if uri.host
raise ArgumentError, "mbox URI must have a path component" unless uri.path
@@ -27,13 +28,14 @@ class MBox < Source
else
@f = uri_or_fp
@path = uri_or_fp.path
+ @expanded_uri = "mbox://#{@path}"
end
super uri_or_fp, usual, archived, id
end
def file_path; @path end
- def is_source_for? uri; super || (self.uri.is_a?(String) && (URI(Source.expand_filesystem_uri(uri)) == URI(Source.expand_filesystem_uri(self.uri)))) end
+ def is_source_for? uri; super || (uri == @expanded_uri) end
def self.suggest_labels_for path
## heuristic: use the filename as a label, unless the file
diff --git a/lib/sup/source.rb b/lib/sup/source.rb
index 204ebd5..9c398f7 100644
--- a/lib/sup/source.rb
+++ b/lib/sup/source.rb
@@ -193,7 +193,11 @@ class SourceManager
@source_mutex.synchronize { @sources.values }.sort_by { |s| s.id }.partition { |s| !s.archived? }.flatten
end
- def source_for uri; sources.find { |s| s.is_source_for? uri }; end
+ def source_for uri
+ expanded_uri = Source.expand_filesystem_uri(uri)
+ sources.find { |s| s.is_source_for? expanded_uri }
+ end
+
def usual_sources; sources.find_all { |s| s.usual? }; end
def unusual_sources; sources.find_all { |s| !s.usual? }; end
--
1.7.2.3
_______________________________________________
Sup-devel mailing list
Sup-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-devel
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [sup-devel] [PATCH] pre-expand source URIs
2011-01-18 18:26 [sup-devel] [PATCH] pre-expand source URIs Sascha Silbe
@ 2011-01-19 3:40 ` Rich Lane
0 siblings, 0 replies; 2+ messages in thread
From: Rich Lane @ 2011-01-19 3:40 UTC (permalink / raw)
To: Sascha Silbe; +Cc: sup-devel
Applied to master.
_______________________________________________
Sup-devel mailing list
Sup-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-devel
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2011-01-19 3:35 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-01-18 18:26 [sup-devel] [PATCH] pre-expand source URIs Sascha Silbe
2011-01-19 3:40 ` Rich Lane
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox