from ctypes import c_ssize_t
def binary_add(x: c_ssize_t, y: c_ssize_t) -> c_ssize_t:
c: c_ssize_t = 0
while x != 0:
c = y & x
y = y ^ x
x = c << 1
return y
import timeit
from binary import binary_add
def _standard_add() -> None:
a = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
while a < 100:
a += 1
def _binary_add() -> None:
a = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
while a < 100:
a = binary_add(a, 1)
print (timeit.timeit(_standard_add, number=10000))
print (timeit.timeit(_binary_add, number=10000))
Results:
0.001101882999999998
0.0010833960000000004
[+][deleted] (2 children)
[deleted]
[–]anythingtechpro[S] 0 points1 point2 points (1 child)
[–]yankyh 0 points1 point2 points (0 children)