Rakefile in rubype-0.2.6 vs Rakefile in rubype-0.3.0

- old
+ new

@@ -1,8 +1,57 @@ require "bundler/gem_tasks" require "rake/testtask" +require "rake/extensiontask" +# Test +#----------------------------------------------- Rake::TestTask.new(:test) do |t| t.libs << "test" end -task default: :test +# Compile C extension +#----------------------------------------------- +Rake::ExtensionTask.new("rubype") do |ext| + ext.lib_dir = "lib/rubype" +end + +task :compile_and_test do + Rake::Task['compile'].invoke + Rake::Task['test'].invoke +end + +# Benchmark +#----------------------------------------------- +desc "Compare with pure ruby" +task :benchmark do + require "benchmark/ips" + require "rubype" + require "rubype/version" + + puts "ruby version: #{RUBY_VERSION}" + class PureClass + def sum(x, y) + x + y + end + end + pure_instance = PureClass.new + + puts "rubype version: #{Rubype::VERSION}" + class RubypeClass + def sum(x, y) + x + y + end + typesig :sum, [Numeric, Numeric] => Numeric + end + rubype_instance = RubypeClass.new + + Benchmark.ips do |x| + x.report('Pure Ruby') { pure_instance.sum(4, 2) } + x.report('Rubype') { rubype_instance.sum(4, 2) } + + x.compare! + end +end +task bm: :benchmark + + +task default: :compile_and_test