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
- vectorized_1 = lambda x: (x**2).sum()
- def nonvectorized_1(x):
- r = 0.0
- for i in range(N):
- r += 0.1 + 0.2 * sin(i) * cos(0.2+i) * arctan(15-i)
- return r
- print('\n1st derivatives: ')
- for name, N, f in [
- ('vectorized_1', 1500, 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: 0.5
- nonvectorized_1: time elapsed for N = 100: 2.8
- 2nd derivatives:
- vectorized_1: time elapsed for N = 50: 4.8
- nonvectorized_1: time elapsed for N = 20: 9.7
- PyPy results - faster for nonvectorized, but almost 5x times slower for 1st derivatives vectorized
- 1st derivatives:
- vectorized_1: time elapsed for N = 1000: 2.4
- nonvectorized_1: time elapsed for N = 100: 1.2
- 2nd derivatives:
- vectorized_1: time elapsed for N = 50: 4.3
- nonvectorized_1: time elapsed for N = 20: 3.7
- '''
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement