[Groonga-commit] groonga/groonga [master] [query-log][analyzer] add --dynamic-sort for benchmark. refs #939

Back to archive index

null+****@clear***** null+****@clear*****
2011年 6月 2日 (木) 16:45:23 JST


Kouhei Sutou	2011-06-02 07:45:23 +0000 (Thu, 02 Jun 2011)

  New Revision: 9be47af12484df3d55f082643244487203733133

  Log:
    [query-log][analyzer] add --dynamic-sort for benchmark. refs #939

  Modified files:
    tools/groonga-query-log-analyzer.rb

  Modified: tools/groonga-query-log-analyzer.rb (+22 -1)
===================================================================
--- tools/groonga-query-log-analyzer.rb    2011-06-02 07:32:40 +0000 (2c663cb)
+++ tools/groonga-query-log-analyzer.rb    2011-06-02 07:45:23 +0000 (f1b7d63)
@@ -13,13 +13,20 @@ class GroongaQueryLogAnaylzer
   def run(argv=nil)
     log_paths = @option_parser.parse!(argv || ARGV)
 
+    dynamic_sort = @options[:dynamic_sort]
     statistics = SizedStatistics.new(@options[:n_entries], @options[:order])
-    parser = QueryLogParser.new(statistics)
+    if dynamic_sort
+      parser = QueryLogParser.new(statistics)
+    else
+      full_statistics = []
+      parser = QueryLogParser.new(full_statistics)
+    end
     log_paths.each do |log_path|
       File.open(log_path) do |log|
         parser.parse(log)
       end
     end
+    statistics.replace(full_statistics) unless dynamic_sort
 
     reporter = create_reporter(statistics)
     reporter.apply_options(@options)
@@ -35,6 +42,7 @@ class GroongaQueryLogAnaylzer
     @options[:output] = "-"
     @options[:slow_threshold] = 0.05
     @options[:reporter] = "console"
+    @options[:dynamic_sort] = true
 
     @option_parser = OptionParser.new do |parser|
       parser.banner += " LOG1 ..."
@@ -97,6 +105,13 @@ class GroongaQueryLogAnaylzer
                 "(#{@options[:reporter]})") do |reporter|
         @options[:reporter] = reporter
       end
+
+      parser.on("--[no-]dynamic-sort",
+                "Sorts dynamically.",
+                "Memory and CPU usage reduced for large query log.",
+                "(#{@options[:dynamic_sort]})") do |sort|
+        @options[:dynamic_sort] = sort
+      end
     end
 
     def create_reporter(statistics)
@@ -304,6 +319,12 @@ class GroongaQueryLogAnaylzer
       self
     end
 
+    def replace(other)
+      super(other)
+      sort_by!(&@sorter)
+      super(self[0, @size])
+    end
+
     private
     def sorter
       case @order




Groonga-commit メーリングリストの案内
Back to archive index