|
20 | 20 | b = np.random.randn(n)
|
21 | 21 |
|
22 | 22 | # Nonvectorized
|
23 |
| -start = time.time() |
| 23 | +start = time.perf_counter() |
24 | 24 | for _ in range(n_trials):
|
25 | 25 | c = []
|
26 | 26 | for i in range(len(a)):
|
27 | 27 | c.append(a[i] + b[i])
|
28 | 28 | c = np.array(c)
|
29 |
| -nonvectorized_time = (time.time() - start) / n_trials |
| 29 | +nonvectorized_time = (time.perf_counter() - start) / n_trials |
30 | 30 | print(f"Nonvectorized time: {nonvectorized_time} seconds")
|
31 | 31 |
|
32 | 32 | # Vectorized
|
33 |
| -start = time.time() |
| 33 | +start = time.perf_counter() |
34 | 34 | for _ in range(n_trials):
|
35 | 35 | c_vec = a + b
|
36 |
| -vectorized_time = (time.time() - start) / n_trials |
| 36 | +vectorized_time = (time.perf_counter() - start) / n_trials |
37 | 37 | print(f"Vectorized time: {vectorized_time} seconds")
|
38 | 38 |
|
39 | 39 | assert np.allclose(c, c_vec)
|
|
47 | 47 | b = np.random.randn(n) # add a row vector to each row of a
|
48 | 48 |
|
49 | 49 | # Nonvectorized
|
50 |
| -start = time.time() |
| 50 | +start = time.perf_counter() |
51 | 51 | for _ in range(n_trials):
|
52 | 52 | c = []
|
53 | 53 | for i in range(len(a)):
|
54 | 54 | c.append(a[i] + b)
|
55 | 55 | c = np.array(c)
|
56 |
| -nonvectorized_time = (time.time() - start) / n_trials |
| 56 | +nonvectorized_time = (time.perf_counter() - start) / n_trials |
57 | 57 | print(f"Nonvectorized time: {nonvectorized_time} seconds")
|
58 | 58 |
|
59 | 59 | # Vectorized
|
60 |
| -start = time.time() |
| 60 | +start = time.perf_counter() |
61 | 61 | for _ in range(n_trials):
|
62 | 62 | c_vec = a + b[np.newaxis, :]
|
63 |
| -vectorized_time = (time.time() - start) / n_trials |
| 63 | +vectorized_time = (time.perf_counter() - start) / n_trials |
64 | 64 | print(f"Vectorized time: {vectorized_time} seconds")
|
65 | 65 |
|
66 | 66 | assert np.allclose(c, c_vec)
|
|
74 | 74 | a = np.random.randn(n, n_signals)
|
75 | 75 |
|
76 | 76 | # Nonvectorized
|
77 |
| -start = time.time() |
| 77 | +start = time.perf_counter() |
78 | 78 | for _ in range(n_trials):
|
79 | 79 | c = []
|
80 | 80 | for i in range(n_signals):
|
81 | 81 | c.append(np.fft.fft(a[:, i]))
|
82 | 82 | c = np.array(c)
|
83 |
| -nonvectorized_time = (time.time() - start) / n_trials |
| 83 | +nonvectorized_time = (time.perf_counter() - start) / n_trials |
84 | 84 | print(f"Nonvectorized time: {nonvectorized_time} seconds")
|
85 | 85 |
|
86 | 86 | # Vectorized
|
87 |
| -start = time.time() |
| 87 | +start = time.perf_counter() |
88 | 88 | for _ in range(n_trials):
|
89 | 89 | c_vec = np.fft.fft(a, axis=0)
|
90 |
| -vectorized_time = (time.time() - start) / n_trials |
| 90 | +vectorized_time = (time.perf_counter() - start) / n_trials |
91 | 91 | print(f"Vectorized time: {vectorized_time} seconds")
|
92 | 92 |
|
93 | 93 | assert np.allclose(c.T, c_vec)
|
|
99 | 99 |
|
100 | 100 | # float64
|
101 | 101 | a = np.random.randn(512, 512)
|
102 |
| -start = time.time() |
| 102 | +start = time.perf_counter() |
103 | 103 | for _ in range(n_trials):
|
104 | 104 | # b = np.fft.rfft2(a)
|
105 | 105 | b = rfft2(a)
|
106 |
| -float64_time = (time.time() - start) / n_trials |
| 106 | +float64_time = (time.perf_counter() - start) / n_trials |
107 | 107 | print(f"float64 time: {float64_time} seconds")
|
108 | 108 |
|
109 | 109 | # float32
|
110 | 110 | a32 = a.astype(np.float32)
|
111 |
| -start = time.time() |
| 111 | +start = time.perf_counter() |
112 | 112 | for _ in range(n_trials):
|
113 | 113 | # b32 = np.fft.rfft2(a32)
|
114 | 114 | b32 = rfft2(a32)
|
115 |
| -float32_time = (time.time() - start) / n_trials |
| 115 | +float32_time = (time.perf_counter() - start) / n_trials |
116 | 116 | print(f"float32 time: {float32_time} seconds")
|
117 | 117 |
|
118 | 118 | assert b32.dtype == np.complex64
|
|
0 commit comments