Hacker News new | ask | show | jobs
by mg 1071 days ago
Is Python's "values don't change, they get replaced by new ones stored elsewhere" approach what makes it slow?

I would like to see some micro-benchmarks which pin down the bottlenecks.

For example, this minimal benchmark with one variable and a few control structures:

    x=0
    for i in range(int(10e6)):
        if i<50: x=x+1
    print (x)
Runs 5 times slower here than the same in PHP:

    $x=0;
    for ($i=0; $i<10e6; $i++)
        if ($i<50) $x++;
    echo "$x\n";
Tested with:

    time python3 loop.py
Which gives me 0.31s

And:

    time php loop.php
Which gives me 0.06s

A factor of five seems to be roughly the average when comparing Python to PHP for a bunch of different code constructs I tried.

2 comments

You can’t use time command in this sort of benchmark. You are including start up t times here.
Startup times seem to be the same and also negligible:

    time python3 nothing.py
    0.011s

    time php nothing.php
    0.011s
Startup time in Python depends on the program because Python compiles all modules to bytecode before executing them.
When I up the loop size by a factor of 10, Python takes 10x longer. So I don't think the compile time plays a role here.

Similar for the PHP version.

    python3 loop.py
    3.450s

    time php loop.php
    0.469s
So PHP is 7x faster for the longer loop.
PHP JIT ?