For open source programmers who want to write highly readable and reusable programs, the first choice is Python. It is completely free with a pretty rich set of libraries and tool-chain for almost everything that you can imagine. However we should find how efficient python is when used for writing computational programs.

In this type of computer program, we are typically dealing with giant "for" and "while" loops over repetitive numerical operations such as addition and multiplication etc. Therefore the efficiency of the program is limited by the efficiency of the "for" loop and particularly, the programming language that implements the "for" loop for us.

Here we compare Python with Matlab and Ruby which are usually used. To measure the built-in delay of a for loop we write the following program in Matlab

and similar program in Python is written as

In this type of computer program, we are typically dealing with giant "for" and "while" loops over repetitive numerical operations such as addition and multiplication etc. Therefore the efficiency of the program is limited by the efficiency of the "for" loop and particularly, the programming language that implements the "for" loop for us.

Here we compare Python with Matlab and Ruby which are usually used. To measure the built-in delay of a for loop we write the following program in Matlab

**tic****for i = 1:100000000****end****out = toc**and similar program in Python is written as

**# File: time-example-5.py****import time****# measure process time****t0 = time.time()****for i in range(0,100000000):****pass****print time.time() - t0, "seconds process time"**
and similar program in Ruby is

**now = Time.now**

**for i in (1..100000000)**

**end**

**print Time.now-now**

when we run these program, we obtain the following timing.

OUTPUT OF RUBY

--------------------------------------------------------------------

ruby 1.8.7 (2010-08-16 patchlevel 302) [i686-linux]

run1 =

**5.970745**seconds
run2 =

**6.174075**seconds
run3 =

**6.117122**seconds
run4 =

**6.028899**seconds
run5 =

**6.195276**seconds
--------------------------------------------------------------------

OUTPUT OF PYTHON

--------------------------------------------------------------------

Python 2.7.1+ linux32

run1 =

**6.72360992432**seconds process time
run2 =

**6.64303207397**seconds process time
run3 =

**6.67376494408**seconds process time
run4 =

**6.68509507179**seconds process time
run5 =

**6.83553600311**seconds process time
--------------------------------------------------------------------

OUTPUT OF MATLAB

--------------------------------------------------------------------

Matlab 2010 + linux32

run1 =

**0.2635**seconds
run2 =

**0.2625**seconds
run3 =

**0.2881**seconds
run4 =

**0.2595**seconds
run5 =

**0.2790**seconds
--------------------------------------------------------------------

__Interestingly, Matlab runs the loop in 0.26 seconds in average which is 23 times better that Ruby and Python versions__.

Even when we use xrange() in python script to improve performance, the code runs in 2 seconds which is one order of magnitude slower that Matlab code.

**We conclude that Matlab performance in "for" loop is much better than Python and Ruby.**