Advertisement
Guest User

shitty numba

a guest
Dec 5th, 2023
56
0
192 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.30 KB | Source Code | 0 0
  1. from numba import jit, njit
  2. from time import perf_counter
  3. from random import randint, random
  4.  
  5.  
  6. def outer(x, y, m=3):
  7.     if x > 0.5:
  8.         return ((y+m) ** 2) / 3 - 0.4
  9.     else:
  10.         return ((y*x) ** 2) / 3 - 0.4
  11.  
  12.  
  13. # типо декораторы создали, чтоб не аффектить оригинал
  14. outer_jit = jit(nopython=False, forceobj=True)(outer)
  15. outer_njit = njit()(outer)
  16.  
  17.  
  18. def tst_simple():
  19.     args = [(random(), randint(1, 9)) for _ in range(100_000)]
  20.     start = perf_counter()
  21.     for x, y in args:
  22.         outer(x=x, y=y)
  23.  
  24.     print(f'Took {perf_counter() - start} secs for simple')
  25.  
  26.  
  27. def tst_jit():
  28.     args = [(random(), randint(1, 9)) for _ in range(100_000)]
  29.     outer_jit(x=0.5, y=2)
  30.     outer_jit(x=0.6, y=1)
  31.     start_jit = perf_counter()
  32.     for x, y in args:
  33.         outer_jit(x=x, y=y)
  34.  
  35.     print(f'Took {perf_counter() - start_jit} secs for jit')
  36.  
  37.  
  38. def tst_njit():
  39.     args = [(random(), randint(1, 9)) for _ in range(100_000)]
  40.     outer_njit(x=0.5, y=2)
  41.     outer_njit(x=0.6, y=1)
  42.     start_njit = perf_counter()
  43.     for x, y in args:
  44.         outer_njit(x=x, y=y)
  45.  
  46.     print(f'Took {perf_counter() - start_njit} secs for njit')
  47.  
  48.  
  49. if __name__ == '__main__':
  50.     tst_simple()  # 9 ms
  51.     tst_jit()  # 70 ms
  52.     tst_njit()  # 23 ms
  53.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement