Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from numba import jit, njit
- from time import perf_counter
- from random import randint, random
- def outer(x, y, m=3):
- if x > 0.5:
- return ((y+m) ** 2) / 3 - 0.4
- else:
- return ((y*x) ** 2) / 3 - 0.4
- # типо декораторы создали, чтоб не аффектить оригинал
- outer_jit = jit(nopython=False, forceobj=True)(outer)
- outer_njit = njit()(outer)
- def tst_simple():
- args = [(random(), randint(1, 9)) for _ in range(100_000)]
- start = perf_counter()
- for x, y in args:
- outer(x=x, y=y)
- print(f'Took {perf_counter() - start} secs for simple')
- def tst_jit():
- args = [(random(), randint(1, 9)) for _ in range(100_000)]
- outer_jit(x=0.5, y=2)
- outer_jit(x=0.6, y=1)
- start_jit = perf_counter()
- for x, y in args:
- outer_jit(x=x, y=y)
- print(f'Took {perf_counter() - start_jit} secs for jit')
- def tst_njit():
- args = [(random(), randint(1, 9)) for _ in range(100_000)]
- outer_njit(x=0.5, y=2)
- outer_njit(x=0.6, y=1)
- start_njit = perf_counter()
- for x, y in args:
- outer_njit(x=x, y=y)
- print(f'Took {perf_counter() - start_njit} secs for njit')
- if __name__ == '__main__':
- tst_simple() # 9 ms
- tst_jit() # 70 ms
- tst_njit() # 23 ms
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement