sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/
commit cfe271237eefdd6b5800ed39527850c74e7b87fe
parent cb33b2b45764fa42ed1c7545a7bbad04fed6ab0d
Author: Rich Lane <rlane@club.cc.cmu.edu>
Date:   Wed, 24 Mar 2010 23:11:21 -0700

benchmark maildir search/glob

Diffstat:
M lib/sup/maildir.rb | 4 ++--
M lib/sup/util.rb | 8 ++++++++
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/lib/sup/maildir.rb b/lib/sup/maildir.rb
@@ -86,8 +86,8 @@ class Maildir < Source
 
   ## XXX use less memory
   def each
-    old_ids = Enumerator.new(Index, :each_source_info, self.id).to_a
-    new_ids = Dir.glob("#{@dir}/*/*").map { |x| x[@dir.length..-1] }.sort
+    old_ids = benchmark(:index) { Enumerator.new(Index, :each_source_info, self.id).to_a }
+    new_ids = benchmark(:glob) { Dir.glob("#{@dir}/*/*").map { |x| x[@dir.length..-1] }.sort }
     added = new_ids - old_ids
     deleted = old_ids - new_ids
     info "#{added.size} added, #{deleted.size} deleted"
diff --git a/lib/sup/util.rb b/lib/sup/util.rb
@@ -4,6 +4,7 @@ require 'mime/types'
 require 'pathname'
 require 'set'
 require 'enumerator'
+require 'benchmark'
 
 ## time for some monkeypatching!
 class Lockfile
@@ -176,6 +177,13 @@ class Object
       EOF
     end
   end
+
+  def benchmark s, &b
+    ret = nil
+    times = Benchmark.measure { ret = b.call }
+    debug "benchmark #{s}: #{times}"
+    ret
+  end
 end
 
 class String