lsegal / yard

YARD is a Ruby Documentation tool (Yay!)

YARD is a documentation generation tool for the Ruby programming language.
 It enables the user to generate consistent, usable documentation that can be
 exported to a number of formats very easily, and also supports extending for
 custom Ruby constructs such as custom class level definitions.

yard / benchmarks / format_args.rb
100644 47 lines (38 sloc) 1.237 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
require "benchmark"
require 'lib/yard'
 
def format_args_regex(object)
  if object.signature
    object.signature[/#{Regexp.quote object.name.to_s}\s*(.*)/, 1]
  else
    ""
  end
end
 
def format_args_parameters(object)
  if !object.parameters.empty?
    args = object.parameters.map {|n, v| v ? "#{n} = #{v}" : n.to_s }.join(", ")
    "(#{args})"
  else
    ""
  end
end
 
YARD::Registry.load
$object = YARD::Registry.at('YARD::Generators::Base#G')
 
puts "regex: " + format_args_regex($object)
puts "params: " + format_args_parameters($object)
puts
 
TIMES = 100_000
Benchmark.bmbm do |x|
  x.report("regex") { TIMES.times { format_args_regex($object) } }
  x.report("parameters") { TIMES.times { format_args_parameters($object) } }
end
 
=begin LAST RUN Jun 23 2008
regex: (generator, opts = {})
params: (generator, opts = {})
 
Rehearsal ----------------------------------------------
regex 1.270000 0.020000 1.290000 ( 1.294558)
parameters 0.690000 0.000000 0.690000 ( 0.693324)
------------------------------------- total: 1.980000sec
 
user system total real
regex 1.260000 0.010000 1.270000 ( 1.268214)
parameters 0.670000 0.000000 0.670000 ( 0.679114)
=end