Hi, recently I asked my friends to run my sort of a benchmark on their
machines (attached). The goal was to test the speed of different data
access in python2 and python3, 32bit and 64bit. One of my friends sent me
the pypy results -- the script ran fast as hell! Astounding.

At home I have a 64bit Dell laptop running 32bit Ubuntu 14.04. I downloaded
your binary
https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.7.0-linux32.tar.bz2 and
confirmed my friend's results, wow.

I develop a large Django project, that includes a big amount of background
data processing. Reads large files, computes, issues much SQL to postgresql
via psycopg2, every 5 minutes. Heavily uses memcache daemon between runs.

I'd welcome a speedup here very much.

So let's give it a try. Installed psycopg2cffi (via pip in virtualenv), set
up the paths and ran. The computation printouts were the same, very
promising -- taking into account how complicated the project is! The SQL
looked right too. My respect on compatiblity!

Unfortunately, the time needed to complete was double in comparison CPython
2.7 for exactly the same task.

You mention you might have some tips for why it's slow. Are you interested
in getting in touch? Although I rather can't share the code and data with
you, I'm offering a real world example of significant load that might help
Pypy get better.

Thank you,

-- 
: Vlada Macek  :  http://macek.sandbox.cz  : +420 608 978 164
: UNIX && Dev || Training : Python, Django : PGP key 97330EBD

(Disclaimer: The opinions expressed herein are not necessarily those
of my employer, not necessarily mine, and probably not necessary.)

import platform
import sys
import time

try:
    range = xrange
except:
    pass


print(platform.uname())
print(platform.architecture())
print(sys.version)
print(sys.maxsize)

cnt = 10**8

g = 0

d = {'g': 0}

print('\noldstyle')

class A:
    c = 0

    def __init__(self):
        global g, d

        start = time.time()
        for _ in range(cnt):
            x = g
        ref_delta = time.time() - start
        print('g  get  %.2f sec' % (ref_delta, ))

        start = time.time()
        for _ in range(cnt):
            x = d['g']
        delta = time.time() - start
        print('gd get  %.2f sec, %.2fx slower' % (delta, delta/float(ref_delta)))

        start = time.time()
        self.i = 0
        for _ in range(cnt):
            x = self.i
        delta = time.time() - start
        print('is get  %.2f sec, %.2fx slower' % (delta, delta/float(ref_delta)))

        start = time.time()
        for _ in range(cnt):
            x = self.c
        delta = time.time() - start
        print('cs get  %.2f sec, %.2fx slower' % (delta, delta/float(ref_delta)))

        start = time.time()
        for _ in range(cnt):
            x = A.c
        delta = time.time() - start
        print('cc get  %.2f sec, %.2fx slower' % (delta, delta/float(ref_delta)))


        print('')


        start = time.time()
        for _ in range(cnt):
            g += 1
        ref_delta = time.time() - start
        print('g  incr %.2f sec' % (ref_delta, ))

        start = time.time()
        for _ in range(cnt):
            d['g'] += 1
        delta = time.time() - start
        print('gd incr %.2f sec, %.2fx slower' % (delta, delta/float(ref_delta)))

        start = time.time()
        for _ in range(cnt):
            self.i += 1
        delta = time.time() - start
        print('is incr %.2f sec, %.2fx slower' % (delta, delta/float(ref_delta)))

        start = time.time()
        for _ in range(cnt):
            self.c += 1
        delta = time.time() - start
        print('cs incr %.2f sec, %.2fx slower' % (delta, delta/float(ref_delta)))

        start = time.time()
        for _ in range(cnt):
            A.c += 1
        delta = time.time() - start
        print('cc incr %.2f sec, %.2fx slower' % (delta, delta/float(ref_delta)))


A()


print('\nnewstyle')

class A(object):
    c = 0

    def __init__(self):
        global g, d

        start = time.time()
        for _ in range(cnt):
            x = g
        ref_delta = time.time() - start
        print('g  get  %.2f sec' % (ref_delta, ))

        start = time.time()
        for _ in range(cnt):
            x = d['g']
        delta = time.time() - start
        print('gd get  %.2f sec, %.2fx slower' % (delta, delta/float(ref_delta)))

        start = time.time()
        self.i = 0
        for _ in range(cnt):
            x = self.i
        delta = time.time() - start
        print('is get  %.2f sec, %.2fx slower' % (delta, delta/float(ref_delta)))

        start = time.time()
        for _ in range(cnt):
            x = self.c
        delta = time.time() - start
        print('cs get  %.2f sec, %.2fx slower' % (delta, delta/float(ref_delta)))

        start = time.time()
        for _ in range(cnt):
            x = A.c
        delta = time.time() - start
        print('cc get  %.2f sec, %.2fx slower' % (delta, delta/float(ref_delta)))


        print('')


        start = time.time()
        for _ in range(cnt):
            g += 1
        ref_delta = time.time() - start
        print('g  incr %.2f sec' % (ref_delta, ))

        start = time.time()
        for _ in range(cnt):
            d['g'] += 1
        delta = time.time() - start
        print('gd incr %.2f sec, %.2fx slower' % (delta, delta/float(ref_delta)))

        start = time.time()
        for _ in range(cnt):
            self.i += 1
        delta = time.time() - start
        print('is incr %.2f sec, %.2fx slower' % (delta, delta/float(ref_delta)))

        start = time.time()
        for _ in range(cnt):
            self.c += 1
        delta = time.time() - start
        print('cs incr %.2f sec, %.2fx slower' % (delta, delta/float(ref_delta)))

        start = time.time()
        for _ in range(cnt):
            A.c += 1
        delta = time.time() - start
        print('cc incr %.2f sec, %.2fx slower' % (delta, delta/float(ref_delta)))


A()
_______________________________________________
pypy-dev mailing list
pypy-dev@python.org
https://mail.python.org/mailman/listinfo/pypy-dev

Reply via email to