Added new speed test and minor cosmetic fixes to
other older tests. git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@9826 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
7c2e64a8dd
commit
597f650d02
5 changed files with 89 additions and 3 deletions
|
|
@ -5,6 +5,7 @@
|
||||||
%include <std_list.i>
|
%include <std_list.i>
|
||||||
%include <std_set.i>
|
%include <std_set.i>
|
||||||
%include <std_map.i>
|
%include <std_map.i>
|
||||||
|
%include <std_functors.i>
|
||||||
|
|
||||||
%template(Vector ) std::vector <swig::LANGUAGE_OBJ>;
|
%template(Vector ) std::vector <swig::LANGUAGE_OBJ>;
|
||||||
%template(Deque ) std::deque <swig::LANGUAGE_OBJ>;
|
%template(Deque ) std::deque <swig::LANGUAGE_OBJ>;
|
||||||
|
|
|
||||||
|
|
@ -26,13 +26,13 @@ sum == 'abc'
|
||||||
b = s.begin # only if swig iterators are on
|
b = s.begin # only if swig iterators are on
|
||||||
e = s.end
|
e = s.end
|
||||||
sum = ''
|
sum = ''
|
||||||
while b != e; sum << b.next; end
|
while b != e; sum << b.value; b.next; end
|
||||||
sum == 'abc'
|
sum == 'abc'
|
||||||
|
|
||||||
b = s.rbegin # only if swig iterators are on
|
b = s.rbegin # only if swig iterators are on
|
||||||
e = s.rend
|
e = s.rend
|
||||||
sum = ''
|
sum = ''
|
||||||
while b != e; sum << b.next; end
|
while b != e; sum << b.value; b.next; end
|
||||||
sum == 'cba'
|
sum == 'cba'
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
21
Examples/test-suite/ruby/li_std_speed.i
Normal file
21
Examples/test-suite/ruby/li_std_speed.i
Normal file
|
|
@ -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>;
|
||||||
64
Examples/test-suite/ruby/li_std_speed_runme.rb
Executable file
64
Examples/test-suite/ruby/li_std_speed_runme.rb
Executable file
|
|
@ -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
|
||||||
|
|
||||||
|
|
@ -52,7 +52,7 @@ im = midentb(m)
|
||||||
|
|
||||||
mi = Imatrix.new(m)
|
mi = Imatrix.new(m)
|
||||||
mc = Cmatrix.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 ={}
|
||||||
map['hello'] = 1
|
map['hello'] = 1
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue