Doing this test with ramp up time, and adding return statement to
all, as build_up 1 had, a print statement, and 1000 iterations:
build_up was faster than build_up1 by a factor of 2
And build_up 3 disqualifies as it returns wrong answer.
all, as build_up 1 had, a print statement, and 1000 iterations:
build_up was faster than build_up1 by a factor of 2
And build_up 3 disqualifies as it returns wrong answer.
import time import numpy as np def build_up(): outbox = [0, 0, 64, 65] d = outbox[3] << 24 | outbox[2] << 16 | outbox[1] << 8 | outbox[0] member = float(d) return member def build_up1(): member = float(sum([i << s for i, s in zip([0, 0, 64, 65], [0, 8, 16, 24])])) return member def build_up2(): array = np.array((0, 0, 64, 65), np.int32) << np.array((0, 8, 16, 24), np.int32) d = np.sum(array) member = np.array((d, 0)) member.dtype = np.float32 return member def main(): #Throw on away, statr up overhead member = build_up() t0 = time.clock() for x in range(1000): member = build_up() t1 = time.clock() print(f'Float output = {member}') print(f'time build_up: {(t1-t0)/1000}') t0 = time.clock() for x in range(1000): member = build_up1() t1 = time.clock() print(f'Float output = {member}') print(f'time build_up1: {(t1-t0)/1000}') t0 = time.clock() for x in range(1000): member = build_up2() t1 = time.clock() print(f'Float output = {member}') print(f'time build_up2: {(t1-t0)/1000}') if __name__ == '__main__': main()
Output:Float output = 1094713344.0
time build_up: 4.671965315329499e-07
Float output = 1094713344.0
time build_up1: 9.267131200817964e-07
Float output = [ 12. 0.]
time build_up2: 4.925915430003848e-06