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