Advertisement
Dmitrey15

PyPy vs CPython, DerApproximator results

May 8th, 2012
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.82 KB | None | 0 0
  1. from DerApproximator import *
  2. from numpy import sin, cos, arctan, arange
  3. from time import time
  4. N = 1000
  5.  
  6. #from _numpypy.pypy import set_invalidation
  7. #set_invalidation(False)
  8.  
  9. vectorized_1 = lambda x: sin(x**2).sum() + cos(1-x**2).sum()
  10.  
  11. def nonvectorized_1(x):
  12.     r = 0.0
  13.     for i in range(N):
  14.         r += 0.1 * r + 0.2 * sin(x[i]) * cos(0.2+x[i]) * arctan(15-x[i])
  15.     return r
  16.  
  17. print('\n1st derivatives: ')
  18. for name, N, f in [
  19.                 ('vectorized_1', 1000, vectorized_1),
  20.                 ('nonvectorized_1', 100, nonvectorized_1)
  21.                 ]:
  22.     t = time()
  23.     r = get_d1(f, arange(float(N)))
  24.     print('%s: time elapsed for N = %d: % 0.1f' % (name,  N, time()-t))
  25.  
  26. print('2nd derivatives: ')
  27. for name, N, f in [
  28.                 ('vectorized_1', 50, lambda x: (x**2).sum()),
  29.                 ('nonvectorized_1', 20, nonvectorized_1)
  30.                 ]:
  31.     t = time()
  32.     r = get_d2(f, arange(float(N)))
  33.     print('%s: time elapsed for N = %d: % 0.1f' % (name,  N, time()-t))
  34.  
  35. '''
  36. CPython results:
  37. 1st derivatives:
  38. vectorized_1: time elapsed for N = 1000:  1.3
  39. nonvectorized_1: time elapsed for N = 100:  3.1
  40. 2nd derivatives:
  41. vectorized_1: time elapsed for N = 50:  4.7
  42. nonvectorized_1: time elapsed for N = 20:  10.8
  43.  
  44. PyPy results
  45. 1st derivatives:
  46. vectorized_1: time elapsed for N = 1000:  7.1 # slower
  47. nonvectorized_1: time elapsed for N = 100:  1.0
  48. 2nd derivatives:
  49. vectorized_1: time elapsed for N = 50:  5.3
  50. nonvectorized_1: time elapsed for N = 20:  3.8
  51.  
  52. PyPy results with
  53. from _numpypy.pypy import set_invalidation
  54. set_invalidation(False)
  55.  
  56. 1st derivatives:
  57. vectorized_1: time elapsed for N = 1000:  3.8
  58. nonvectorized_1: time elapsed for N = 100:  0.9
  59. 2nd derivatives:
  60. vectorized_1: time elapsed for N = 50:  3.2
  61. nonvectorized_1: time elapsed for N = 20:  2.7
  62. '''
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement