With 25 years in development, Python has been evolving from a hobby project to a full blown general purpose language used for scripting, data science, games programming, web servers and more.
For it's characteristics, Python is a imperative and dynamic language with some characteristics from functional programming included; also supporting the object oriented paradigm. It's main selling point is it's readable syntax, that uses indentation to delimit code blocks.
Results
Python 2.7.6 was used for the tests.
Loading time
How fast does the interpreter loads and parses the source code.
$ time python pyrb.py
real 0m0.052s
user 0m0.040s
sys 0m0.000s
Running Time
$ time python pyrb.py
real 348m35.965s
user 345m51.776s
sys 0m22.880s
$ time pypy pyrb.py
real 14m2.406s
user 13m55.292s
sys 0m1.416s
The running time for the regular Python interpreter is abysmal, although not as bad as Lua. It gets much better if you are using Pypy, which makes the code run almost as fast as mono.
Code Metrics
Line count: 213 code, 57 blanks, 270 total. File size: 5825 bytes.
General Thoughts
I ran into several problems while doing the translation of the raybench source to Python, one of the main drawbacks was the way code blocks are defined using indentation. Personally it made the code blocks a bit more difficult to manage while not adding much to readability, also, I had to fight with vim's auto indentation which more often than not, inserted and incorrect amount of spaces for new lines, miss interpreting the context.
Another problem that was sort of difficult to debug was with the way divisions are handled. For instance, when dividing 5/4 in Lua or Javascript, the answer is 1.25, but the same operation in Python returns 1. Returning an integer from the division of two whole numbers is the expected behaviour of languages like C, where if you want a floating point result you have to cast one of the numbers to float or have the variables be of that type, but in Python there are no types, which makes this a bit more annoying. In any case, you have to add a decimal point to the dividend or the divisor, or you will loose the decimal digits.
On the bright side, Python has great support from libraries for almost any task imaginable, and runs on a great number of different platforms. Also, Pypy is awesomely fast!.
Follow
You can follow the development of this project on GitHub: https://github.com/niofis/raybench