blob: 3f39fb947dcfb4a5ae60a9b96826dc76aeb4c4bb (
plain)
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
|
require 'coderay'
require 'benchmark'
N = 10
$code = 'foo(Foo[:foo, /foo/m]); ' * 500
Benchmark.bm 15 do |bm|
bm.report 'loading' do
CodeRay::Scanners.load :ruby
CodeRay::Encoders.load :div
end
bm.report 'CodeRay.encode' do N.times do
CodeRay.encode($code, :ruby, :div)
end end
bm.report 'Direct' do N.times do
CodeRay::Encoders::Div.new.encode_tokens(
CodeRay::Scanners::Ruby.new($code).tokenize
)
end end
bm.report 'Semi-cached' do
encoder = CodeRay::Encoders::Div.new
N.times do
encoder.encode $code, :ruby
end
end
bm.report 'Fully cached' do
scanner = CodeRay::Scanners::Ruby.new('')
encoder = CodeRay::Encoders::Div.new
N.times do
scanner.string = $code
encoder.encode_tokens scanner.tokens
end
end
bm.report 'Duo cached' do
duo = CodeRay::Duo[:ruby, :div]
N.times do
duo.encode $code
end
end
end
|