From: David Chelimsky Date: 2007-03-08T02:16:58+09:00 Subject: Re: A better benchmarking syntax (was: Automatic Benchmark Iterations) On 3/7/07, Daniel Schierbeck wrote: > On Wed, 2007-03-07 at 23:18 +0900, Trans wrote: > > > > On Mar 7, 8:26 am, Daniel Schierbeck > > wrote: > > > Reading Phrogz' post about automatic benchmark iterations, and then > > > seeing Mauricios' lovely Adaptative Benchmark[1], I came to think we > > > might need a friendlier syntax for benchmarks all together. Minutes > > > later, I discovered that someone had almost the same idea as me[2]. > > > Anyway, I'd like to just throw it out here, and hear what you people > > > think. > > > > > > The idea is to make benchmarks syntactically similar to the current > > > Test::Unit test cases, e.g. > > > > > > class SortBenchmark < Benchmark > > > def setup > > > @array = [1, 6, 2, 9, 4, 6, 2] > > > end > > > > > > def teardown > > > @array = nil > > > end > > > > > > def report_quicksort > > > @array.quicksort > > > end > > > > > > def report_mergesort > > > @array.mergesort > > > end > > > end > > > > > > Automatic iteration could be added, either as a class method call or by > > > creating a different base class (IterativeBenchmark?) > > > > > > So, what do y'all think? If I'm not the only one liking this, I might > > > whip something up when I get some spare time... > > > > Cool! Go BDD with it: > > > > benchmark "compare sorting methods" do > > > > compare "quick sort" > > @array.quicksort > > end > > > > compare "merge sort" do > > @array.mergesort > > end > > > > end > > > > Or something like that. > > I must admit to being a great fan of RSpec, although the pace of API > changes has thrown me off for now, Thanks for being a fan. FWIW, the recent API changes are the last significant ones. What's new in 0.8 will be the basis of 1.0. Cheers, David > but I'm not sure this path is the > best. I did actually think about it at first. The strength of Test::Unit > is its simple syntax: just remember #setup, #teardown, and #test_*. I'd > like to add the same simplicity to any new benchmarking system. I'll > give it some more thought :) > > Any idea for a name? "benchmark" is unfortunately already taken... > > > Cheers, > Daniel > > >