Ruby is also not far away :-)

Here's my code:

++++++++++++++++++++++++++++++++++++++++
require 'time'

def f
  a = []
  1000000.times do
    a.push "What do you know"
    a.push "so long ..."
    a.push "chicken crosses road"
    a.push "fool"
  end
  b = a.uniq
  b.each do |x|
    puts x
  end
end

def f2
  a = Array.new(4000000)
  1000000.times do |i|
    a[i] = "What do you know"
    a[i+1] = "so long ..."
    a[i+2] = "chicken crosses road"
    a[i+3] = "fool"
  end
  b = a.uniq
  b.each do |x|
    puts x
  end
end


f_start = Time.now
f
f_end = Time.now

f2_start = Time.now
f2
f2_end = Time.now

puts "f: Elapsed time: #{f_end - f_start} sec."
puts "f2: Elapsed time: #{f2_end - f_start} sec."

++++++++++++++++++++++++++++++++++++++++++

And the benchmark result:

What do you know
so long ...
chicken crosses road
fool
What do you know
so long ...
chicken crosses road
fool
nil
f: Elapsed time: 3.600294 sec.
f2: Elapsed time: 11.182927 sec.

++++++++++++++++++++++++++++++++++++++++++

I like ruby because its purity. :p



Licheng Fang wrote:
> Hi, I'm learning STL and I wrote some simple code to compare the
> efficiency of python and STL.
>
> //C++
> #include <iostream>
> #include <string>
> #include <vector>
> #include <set>
> #include <algorithm>
> using namespace std;
>
> int main(){
>       vector<string> a;
>       for (long int i=0; i<10000 ; ++i){
>               a.push_back("What do you know?");
>               a.push_back("so long...");
>               a.push_back("chicken crosses road");
>               a.push_back("fool");
>       }
>       set<string> b(a.begin(), a.end());
>       unique_copy(b.begin(), b.end(), ostream_iterator<string>(cout, "\n"));
> }
>
> #python
> def f():
>       a = []
>       for i in range(10000):
>               a.append('What do you know')
>               a.append('so long...')
>               a.append('chicken crosses road')
>               a.append('fool')
>       b = set(a)
>       for s in b:
>               print s
>
> I was using VC++.net and IDLE, respectively. I had expected C++ to be
> way faster. However, while the python code gave the result almost
> instantly, the C++ code took several seconds to run! Can somebody
> explain this to me? Or is there something wrong with my code?

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to