diff --git a/Rakefile b/Rakefile index 3d8847e..c602b74 100644 --- a/Rakefile +++ b/Rakefile @@ -1,3 +1,4 @@ +require 'bundler/setup' require 'rake/testtask' Rake::TestTask.new do |t| diff --git a/bin/sieve b/bin/sieve new file mode 100755 index 0000000..276eedc --- /dev/null +++ b/bin/sieve @@ -0,0 +1,19 @@ +#!/usr/bin/env ruby +# -*- mode: ruby -*- + +require 'rubygems' +require 'bundler/setup' +require_relative '../lib/sieve/primes' + +require 'benchmark' + +# require 'minitest/autorun' +# require 'minitest/benchmark' + +input = ARGV.first.to_i + +primes = Sieve::Primes.new + +Benchmark.bm do |x| + x.report("#{input} primes (sieve):") { primes.take(input) } +end diff --git a/lib/sieve/controller.rb b/lib/sieve/controller.rb index 1c250db..b5db663 100644 --- a/lib/sieve/controller.rb +++ b/lib/sieve/controller.rb @@ -1,5 +1,6 @@ require 'celluloid' require_relative "candidates" +require_relative "model" module Sieve class Controller diff --git a/test/sieve/model_test.rb b/test/sieve/model_test.rb index d629a9d..0607a12 100644 --- a/test/sieve/model_test.rb +++ b/test/sieve/model_test.rb @@ -2,7 +2,7 @@ require 'sieve/model' -class ModelTest < MiniTest::Unit::TestCase +class TestModels < MiniTest::Unit::TestCase # Empty models shouldn't match anything def test_model_empty diff --git a/test/sieve/primes_test.rb b/test/sieve/primes_test.rb index 89d3682..7fca33b 100644 --- a/test/sieve/primes_test.rb +++ b/test/sieve/primes_test.rb @@ -1,8 +1,18 @@ require 'minitest/autorun' +require 'minitest/benchmark' require 'prime' require 'sieve/primes' -class PrimesTest < MiniTest::Unit::TestCase +class TestPrimes < MiniTest::Unit::TestCase + def self.bench_range + [1_000, 10_000, 100_000, 1_000_000] + end + + def bench_sieve_primes + assert_performance_linear 0.9977 do |n| + Sieve::Primes.new.take(n)[4,-1] + end + end # Verify that we can at least obtain the seeded values from the controller def test_controller_seeds_only