Skip to content

Instantly share code, notes, and snippets.

@ashleysommer
Created September 5, 2021 09:45
Show Gist options
  • Save ashleysommer/86a30e4b3b356198db058a7c6b0393e1 to your computer and use it in GitHub Desktop.
Save ashleysommer/86a30e4b3b356198db058a7c6b0393e1 to your computer and use it in GitHub Desktop.
benchmark return self
import timeit
setup_code = """\
class TestClass1:
__slots__ = ("inner",)
def __init__(self):
self.inner = dict()
def add(self, item):
self.inner[item] = 1
def remove(self, item):
del self.inner[item]
t1 = TestClass1()
class TestClass2:
__slots__ = ("inner",)
def __init__(self):
self.inner = dict()
def add(self, item):
self.inner[item] = 1
return self
def remove(self, item):
del self.inner[item]
return self
t2 = TestClass2()
"""
test1 = """\
for i in range(1000,4000,2):
t1.add(i)
for i in range(1000,4000,2):
t1.remove(i)
"""
test2 = """\
for i in range(1000,4000,2):
t2.add(i)
for i in range(1000,4000,2):
t2.remove(i)
"""
n = 10000
res1 = timeit.timeit(test1, setup=setup_code, number=n)
res2 = timeit.timeit(test2, setup=setup_code, number=n)
print(res1/n)
print(res2/n)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment