From a3b4ad06b992bd418a1d34bfb271c09fd9bedf11 Mon Sep 17 00:00:00 2001 From: murphy Date: Tue, 21 Mar 2006 14:46:34 +0000 Subject: =?UTF-8?q?CodeRay::Duo=20added=20for=20cool=20caching!=20bench/ca?= =?UTF-8?q?ching.rb=20added=20t=C2=B4for=20demonstrating=20this.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit HTML Encoder: creates unwrapped output by default (still problems with that.) Numerizing changed (doesn't try to prevent nesting errors) Speedup: "::String" is faster. --- bench/caching.rb | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 bench/caching.rb (limited to 'bench/caching.rb') diff --git a/bench/caching.rb b/bench/caching.rb new file mode 100644 index 0000000..3f39fb9 --- /dev/null +++ b/bench/caching.rb @@ -0,0 +1,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 -- cgit v1.2.1