blob: b6c8b667d7a0ed99eae32278c23880b3f8eafcab (
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 = 1000
$code = 'snoo Snoo ' * 10
Benchmark.bm 15 do |bm|
bm.report 'Loading parts' 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 'Encoder 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 'CodeRay::Duo' do
duo = CodeRay::Duo[:ruby, :div]
N.times do
duo.encode $code
end
end
end
|