|
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