Skip to content

Instantly share code, notes, and snippets.

@yihuang
Created July 18, 2014 03:44
Show Gist options
  • Save yihuang/c14ec3991e6406ab4c01 to your computer and use it in GitHub Desktop.
Save yihuang/c14ec3991e6406ab4c01 to your computer and use it in GitHub Desktop.
benchmark cython property
import pyximport; pyximport.install()
class PurePlayer(object):
def __init__(self):
self.__age = 0
def set_age(self, value):
self.__age = value
def get_age(self):
return self.__age
age = property(get_age, set_age)
from c_entity import Player
c_player = Player()
p_player = PurePlayer()
def bench(p):
p.age = 1
return p.age
import timeit
timeit.main(['-s', 'from __main__ import bench, c_player',
'-n', '10000', 'bench(c_player)'])
timeit.main(['-s', 'from __main__ import bench, p_player',
'-n', '10000', 'bench(p_player)'])
cdef class Player(object):
cdef int __age
property age:
def __get__(self):
return self.__age
def __set__(self, value):
self.__age = value
$ python bench.py
10000 loops, best of 3: 0.155 usec per loop
10000 loops, best of 3: 0.471 usec per loop
$ python bench.py
10000 loops, best of 3: 0.156 usec per loop
10000 loops, best of 3: 0.457 usec per loop
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment