Python is slow.
For most cases this doesn't really matter as the development time is more of a factor. However on low CPU power devices (phones) anything is significant.
First tip on how to speed up python, is to use Atom! Just install with pip. Atom speeds up object creation by about 50% per property (ex an object with 4 properties is about 2x faster, 8 properties 4x, etc...) . I've seen significant performance increases simply by switching in my testing. See the simple example below:
from atom.api import Atom, ForwardInstance, Callable, Unicode, Tuple, Bool, Int, Instance, set_default, Property class TestAtom(Atom): i = Int(1) a = Unicode("abc") b = Tuple(default=(1,2,3)) c = Bool() f = Callable(default=lambda: "test") class TestObj(object): def __init__(self): self.i = 1 self.a = 'abc' self.b = (1,2,3) self.c = False self.f = lambda: "test" %timeit TestAtom() The slowest run took 27.35 times longer than the fastest. This could mean that an intermediate result is being cached. 1000000 loops, best of 3: 218 ns per loop %timeit TestObj() The slowest run took 11.07 times longer than the fastest. This could mean that an intermediate result is being cached. 1000000 loops, best of 3: 732 ns per loop
As you can see this simple example the atom object is created almost 4x faster than the python object. The speed increase scales linearly with the number of attributes in the object. Also the atom object uses about 1/4 the memory (which probably explains the speed increase).
from pympler.asizeof import asizeof a = TestAtom() b = TestObj() asizeof(a) Out[20]: 176 asizeof(b) Out[21]: 760Cheers!
Comments
Post a Comment