import copy
import timeit
class test1:
def __init__(self, x):
self.x = x
def __add__(self, other):
return test1(self.x + other.x)
class test2:
def __init__(self, x):
self.x = x
def __add__(self, other):
new = copy.deepcopy(self)
new.x = new.x + other.x
return new
print(timeit.timeit('x + y', 'x, y = test1(1), test1(2)', globals=globals(), number=10000))
print(timeit.timeit('x + y', 'x, y = test2(1), test2(2)', globals=globals(), number=10000))
aW1wb3J0IGNvcHkKaW1wb3J0IHRpbWVpdAoKY2xhc3MgdGVzdDE6CiAgICBkZWYgX19pbml0X18oc2VsZiwgeCk6CiAgICAgICAgc2VsZi54ID0geAoKICAgIGRlZiBfX2FkZF9fKHNlbGYsIG90aGVyKToKICAgICAgICByZXR1cm4gdGVzdDEoc2VsZi54ICsgb3RoZXIueCkKCmNsYXNzIHRlc3QyOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHgpOgogICAgICAgIHNlbGYueCA9IHgKCiAgICBkZWYgX19hZGRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgbmV3ID0gY29weS5kZWVwY29weShzZWxmKQogICAgICAgIG5ldy54ID0gbmV3LnggKyBvdGhlci54CiAgICAgICAgcmV0dXJuIG5ldwoKcHJpbnQodGltZWl0LnRpbWVpdCgneCArIHknLCAneCwgeSA9IHRlc3QxKDEpLCB0ZXN0MSgyKScsIGdsb2JhbHM9Z2xvYmFscygpLCBudW1iZXI9MTAwMDApKQpwcmludCh0aW1laXQudGltZWl0KCd4ICsgeScsICd4LCB5ID0gdGVzdDIoMSksIHRlc3QyKDIpJywgZ2xvYmFscz1nbG9iYWxzKCksIG51bWJlcj0xMDAwMCkp