1. 28 Dec, 2015 1 commit
  2. 11 Dec, 2015 1 commit
  3. 09 Dec, 2015 5 commits
  4. 23 Nov, 2015 3 commits
  5. 17 Nov, 2015 1 commit
  6. 16 Nov, 2015 2 commits
  7. 13 Nov, 2015 1 commit
  8. 11 Nov, 2015 2 commits
  9. 10 Nov, 2015 1 commit
  10. 05 Oct, 2015 1 commit
  11. 02 Oct, 2015 1 commit
    • Yorick Peterse's avatar
      Basic setup for an RSpec based benchmark suite · 19893a1c
      Yorick Peterse authored
      This benchmark suite uses benchmark-ips
      (https://github.com/evanphx/benchmark-ips) behind the scenes. Specs can
      be turned into benchmark specs by setting "benchmark" to "true" in the
      top-level describe block like so:
      
          describe SomeClass, benchmark: true do
      
          end
      
      Writing benchmarks can be done using custom RSpec matchers, for example:
      
          describe MaruTheCat, benchmark: true do
            describe '#jump_in_box' do
              it 'should run 1000 iterations per second' do
                maru = described_class.new
      
                expect { maru.jump_in_box }.to iterate_per_second(1000)
              end
            end
          end
      
      By default the "iterate_per_second" expectation requires a standard
      deviation under 30% (this is just an arbitrary default for now). You can
      change this by chaining "with_maximum_stddev" on the expectation:
      
          expect { maru.jump_in_box }.to iterate_per_second(1000)
            .with_maximum_stddev(10)
      
      This will change the expectation to require a maximum deviation of 10%.
      
      Alternatively you can use the it block style to write specs:
      
          describe MaruTheCat, benchmark: true do
            describe '#jump_in_box' do
              subject { -> { described_class.new } }
      
              it { is_expected.to iterate_per_second(1000) }
            end
          end
      
      Because "iterate_per_second" operates on a block, opposed to a static
      value, the "subject" method must return a Proc. This looks a bit goofy
      but I have been unable to find a nice way around this.
      19893a1c
  12. 10 Sep, 2015 1 commit
  13. 09 Sep, 2015 1 commit
  14. 28 Jun, 2015 1 commit
  15. 23 Jun, 2015 1 commit
  16. 18 Jun, 2015 2 commits
  17. 17 Jun, 2015 1 commit
  18. 15 Jun, 2015 1 commit
  19. 04 Jun, 2015 3 commits