1

User Image Pypy Vs Python April 1, 2016, 5:05 p.m.

Results:

Arm - Beagleboard

 

Calculation Table (in seconds) Python PyPy
 Array Copy 89.420 19.510 
Float Arithmetic 77.180 0.640
Integer Arithmetic 75.720 6.270
String Search 14.860 0.640
Total 257.210 27.070

 


 

80x86 64bit (4 core but single thread)

Calculation Table (in seconds) Python PyPy
 Array Copy 26.906 8.053 
Float Arithmetic 25.386 0.178
Integer Arithmetic 23.494 1.988
String Search 4.856 0.219
Total 80.642 10.438

 

 

 

 

 

 

 

 

 

 

 

 


 

Test Code:

# -*- coding: utf-8 -*-
import time

__author__ = 'ozgur'
__creation_date__ = '4/1/16' '4:11 PM'

TEST_STRING = '''The hierarchy shown above is relative to a PREFIX directory. PREFIX is computed by starting from the directory where the executable resides, and “walking up” the filesystem until we find a directory containing lib_pypy and lib-python/2.7.
The archives (.tar.bz2 or .zip) containing PyPy releases already contain the correct hierarchy, so to run PyPy it’s enough to unpack the archive, and run the bin/pypy executable.
To install PyPy system wide on unix-like systems, it is recommended to put the whole hierarchy alone (e.g. in /opt/pypy2.1) and put a symlink to the pypy executable into /usr/bin or /usr/local/bin
If the executable fails to find suitable libraries, it will report debug: WARNING: library path not found, using compiled-in sys.path and then attempt to continue normally. If the default path is usable, most code will be fine. However, the sys.prefix will be unset and some existing libraries assume beni bul that this is never the case.'''


class StressSuite():
    def __init__(self):
        pass

    @staticmethod
    def test_array():
        a = []
        for y in range(1000000):
            txt_arr = "deneme".split()
            for item in txt_arr:
                a.append(item)
        del (a)

    @staticmethod
    def test_float():
        a = 0.5612342
        b = 653.324556
        c = a + b
        d = a * b
        e = b / a
        f = a - b

    @staticmethod
    def test_int():
        a = 5612342
        b = 653324556
        c = a + b
        d = a * b
        e = b / a
        f = a - b

    @staticmethod
    def test_string():
        b = TEST_STRING.find("beni bul")

    def runtest(self, label, loop, func_exec):
        print "Testing : ", label
        s_time = time.time()
        for x in range(loop):
            func_exec()
        print "%s exec time : %.3f sn." % (label, (time.time() - s_time))

    def run(self):
        s_time = time.time()
        self.runtest("Array Copy", 100, StressSuite.test_array)
        self.runtest("Float Arithmetic", 100000000, StressSuite.test_float)
        self.runtest("Integer Arithmetic", 100000000, StressSuite.test_int)
        self.runtest("String Search", 10000000, StressSuite.test_string)
        print "Total exec time : %.3f sn." % (time.time() - s_time)


if __name__ == '__main__':
    ss = StressSuite()
    ss.run()

 

 


1