Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from DerApproximator import *
- from numpy import sin, cos, arctan, arange
- from time import time
- N = 1000
- #from _numpypy.pypy import set_invalidation
- #set_invalidation(False)
- vectorized_1 = lambda x: sin(x**2).sum() + cos(1-x**2).sum()
- def nonvectorized_1(x):
- r = 0.0
- for i in range(N):
- r += 0.1 * r + 0.2 * sin(x[i]) * cos(0.2+x[i]) * arctan(15-x[i])
- return r
- print('\n1st derivatives: ')
- for name, N, f in [
- ('vectorized_1', 1000, vectorized_1),
- ('nonvectorized_1', 100, nonvectorized_1)
- ]:
- t = time()
- r = get_d1(f, arange(float(N)))
- print('%s: time elapsed for N = %d: % 0.1f' % (name, N, time()-t))
- print('2nd derivatives: ')
- for name, N, f in [
- ('vectorized_1', 50, lambda x: (x**2).sum()),
- ('nonvectorized_1', 20, nonvectorized_1)
- ]:
- t = time()
- r = get_d2(f, arange(float(N)))
- print('%s: time elapsed for N = %d: % 0.1f' % (name, N, time()-t))
- '''
- CPython results:
- 1st derivatives:
- vectorized_1: time elapsed for N = 1000: 1.3
- nonvectorized_1: time elapsed for N = 100: 3.1
- 2nd derivatives:
- vectorized_1: time elapsed for N = 50: 4.7
- nonvectorized_1: time elapsed for N = 20: 10.8
- PyPy results
- 1st derivatives:
- vectorized_1: time elapsed for N = 1000: 7.1 # slower
- nonvectorized_1: time elapsed for N = 100: 1.0
- 2nd derivatives:
- vectorized_1: time elapsed for N = 50: 5.3
- nonvectorized_1: time elapsed for N = 20: 3.8
- PyPy results with
- from _numpypy.pypy import set_invalidation
- set_invalidation(False)
- 1st derivatives:
- vectorized_1: time elapsed for N = 1000: 3.8
- nonvectorized_1: time elapsed for N = 100: 0.9
- 2nd derivatives:
- vectorized_1: time elapsed for N = 50: 3.2
- nonvectorized_1: time elapsed for N = 20: 2.7
- '''
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement