From: <gg...@us...> - 2007-05-19 09:49:22
|
Revision: 9826 http://swig.svn.sourceforge.net/swig/?rev=9826&view=rev Author: gga73 Date: 2007-05-19 02:49:19 -0700 (Sat, 19 May 2007) Log Message: ----------- Added new speed test and minor cosmetic fixes to other older tests. Modified Paths: -------------- trunk/Examples/test-suite/ruby/li_std_functors.i trunk/Examples/test-suite/ruby/li_std_set_runme.rb trunk/Examples/test-suite/ruby/std_containers_runme.rb Added Paths: ----------- trunk/Examples/test-suite/ruby/li_std_speed.i trunk/Examples/test-suite/ruby/li_std_speed_runme.rb Modified: trunk/Examples/test-suite/ruby/li_std_functors.i =================================================================== --- trunk/Examples/test-suite/ruby/li_std_functors.i 2007-05-19 09:41:23 UTC (rev 9825) +++ trunk/Examples/test-suite/ruby/li_std_functors.i 2007-05-19 09:49:19 UTC (rev 9826) @@ -5,6 +5,7 @@ %include <std_list.i> %include <std_set.i> %include <std_map.i> +%include <std_functors.i> %template(Vector ) std::vector <swig::LANGUAGE_OBJ>; %template(Deque ) std::deque <swig::LANGUAGE_OBJ>; Modified: trunk/Examples/test-suite/ruby/li_std_set_runme.rb =================================================================== --- trunk/Examples/test-suite/ruby/li_std_set_runme.rb 2007-05-19 09:41:23 UTC (rev 9825) +++ trunk/Examples/test-suite/ruby/li_std_set_runme.rb 2007-05-19 09:49:19 UTC (rev 9826) @@ -26,13 +26,13 @@ b = s.begin # only if swig iterators are on e = s.end sum = '' -while b != e; sum << b.next; end +while b != e; sum << b.value; b.next; end sum == 'abc' b = s.rbegin # only if swig iterators are on e = s.rend sum = '' -while b != e; sum << b.next; end +while b != e; sum << b.value; b.next; end sum == 'cba' Added: trunk/Examples/test-suite/ruby/li_std_speed.i =================================================================== --- trunk/Examples/test-suite/ruby/li_std_speed.i (rev 0) +++ trunk/Examples/test-suite/ruby/li_std_speed.i 2007-05-19 09:49:19 UTC (rev 9826) @@ -0,0 +1,21 @@ +/** + * @file li_std_speed.i + * @author gga + * @date Fri May 18 18:03:15 2007 + * + * @brief A speed test of the ruby stl + * + * + */ + +%module li_std_speed + +%include <std_list.i> +%include <std_vector.i> +%include <std_deque.i> +%include <std_set.i> + +%template(RbList) std::list<swig::GC_VALUE>; +%template(RbVector) std::vector<swig::GC_VALUE>; +%template(RbDeque) std::deque<swig::GC_VALUE>; +%template(RbSet) std::set<swig::GC_VALUE>; Added: trunk/Examples/test-suite/ruby/li_std_speed_runme.rb =================================================================== --- trunk/Examples/test-suite/ruby/li_std_speed_runme.rb (rev 0) +++ trunk/Examples/test-suite/ruby/li_std_speed_runme.rb 2007-05-19 09:49:19 UTC (rev 9826) @@ -0,0 +1,64 @@ +#!/usr/bin/env ruby + +require 'benchmark' +require 'li_std_speed' +include Li_std_speed + + +def benchmark(f, phigh, sequences) + puts f + print '%10s ' % 'n' + sequences.each { |s| print "%10s" % "#{s.to_s.sub(/.*::/,'')}" } + puts + 0.upto(phigh-1) do |p| + n = 2**p + print "%10d" % n + for s in sequences + cont = s.new((0..n).to_a) + Benchmark.benchmark('',0,'%9.6r') { |x| x.report { f.call(cont) } } + end + puts + end +end + +def iterate(cont) + it = cont.begin + last = cont.end + while it != last + it.next + end +end + + +def erase(cont) + it = cont.end + # can't reuse begin since it might get invalidated + while it != cont.begin + it.previous + # set returns None, so need to reobtain end + it = cont.erase(it) || cont.end + end +end + +def insert(cont) + it = cont.end + size = cont.size + if cont.kind_of? RbSet + size.upto((size<<1) - 1) { |x| cont.insert(x) } + elsif cont.kind_of? RbVector + cont.reserve(size<<1) + size.upto((size<<1) - 1) { |x| cont.push(x) } + else + size.upto((size<<1) - 1) { |x| cont.push(x) } + end +end + +if $0 == __FILE__ + sequences = [RbVector,RbDeque,RbSet,RbList] + n = 15 + for f,phigh in [[method(:iterate),n], [method(:insert),n], + [method(:erase),n-4]] + benchmark(f, phigh, sequences) + end +end + Property changes on: trunk/Examples/test-suite/ruby/li_std_speed_runme.rb ___________________________________________________________________ Name: svn:executable + * Name: svn:eol-style + native Modified: trunk/Examples/test-suite/ruby/std_containers_runme.rb =================================================================== --- trunk/Examples/test-suite/ruby/std_containers_runme.rb 2007-05-19 09:41:23 UTC (rev 9825) +++ trunk/Examples/test-suite/ruby/std_containers_runme.rb 2007-05-19 09:49:19 UTC (rev 9826) @@ -52,7 +52,7 @@ mi = Imatrix.new(m) mc = Cmatrix.new(m) -mi[0][1] == mc[0][1] # or bad matrix +mi[0][0] == mc[0][0] # or bad matrix map ={} map['hello'] = 1 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |