10
10
import timeit
11
11
from ansitable import ANSITable , Column
12
12
13
- N = 1000
13
+ N = 100000
14
14
15
15
table = ANSITable (
16
16
Column ("Operation" , headalign = "^" ),
@@ -23,167 +23,213 @@ def result(op, t):
23
23
table .row (op , t / N * 1e6 )
24
24
# ------------------------------------------------------------------------- #
25
25
26
- transforms_setup = '''
27
- from spatialmath import SE3
28
- from spatialmath import base
26
+ # transforms_setup = '''
27
+ # from spatialmath import SE3
28
+ # from spatialmath import base
29
29
30
- import numpy as np
31
- from collections import namedtuple
32
- Rt = namedtuple('Rt', 'R t')
33
- X1 = SE3.Rand()
34
- X2 = SE3.Rand()
35
- T1 = X1.A
36
- T2 = X2.A
37
- R1 = base.t2r(T1)
38
- R2 = base.t2r(T2)
39
- t1 = base.transl(T1)
40
- t2 = base.transl(T2)
41
- Rt1 = Rt(R1, t1)
42
- Rt2 = Rt(R2, t2)
43
- v = np.r_[1,2,3]
44
- v2 = np.r_[1,2,3, 1]
45
- '''
46
- t = timeit .timeit (stmt = 'base.getvector(0.2)' , setup = transforms_setup , number = N )
47
- result ("getvector(x)" , t )
30
+ # import numpy as np
31
+ # from collections import namedtuple
32
+ # Rt = namedtuple('Rt', 'R t')
33
+ # X1 = SE3.Rand()
34
+ # X2 = SE3.Rand()
35
+ # T1 = X1.A
36
+ # T2 = X2.A
37
+ # R1 = base.t2r(T1)
38
+ # R2 = base.t2r(T2)
39
+ # t1 = base.transl(T1)
40
+ # t2 = base.transl(T2)
41
+ # Rt1 = Rt(R1, t1)
42
+ # Rt2 = Rt(R2, t2)
43
+ # v = np.r_[1,2,3]
44
+ # v2 = np.r_[1,2,3, 1]
45
+ # '''
46
+ # t = timeit.timeit(stmt='base.getvector(0.2)', setup=transforms_setup, number=N)
47
+ # result("getvector(x)", t)
48
48
49
- t = timeit .timeit (stmt = 'base.rotx(0.2, unit="rad")' , setup = transforms_setup , number = N )
50
- result ("base.rotx" , t )
49
+ # t = timeit.timeit(stmt='base.rotx(0.2, unit="rad")', setup=transforms_setup, number=N)
50
+ # result("base.rotx", t)
51
51
52
- t = timeit .timeit (stmt = 'base.trotx(0.2, unit="rad")' , setup = transforms_setup , number = N )
53
- result ("base.trotx" , t )
52
+ # t = timeit.timeit(stmt='base.trotx(0.2, unit="rad")', setup=transforms_setup, number=N)
53
+ # result("base.trotx", t)
54
54
55
- t = timeit .timeit (stmt = 'base.t2r(T1)' , setup = transforms_setup , number = N )
56
- result ("base.t2r" , t )
55
+ # t = timeit.timeit(stmt='base.t2r(T1)', setup=transforms_setup, number=N)
56
+ # result("base.t2r", t)
57
57
58
- t = timeit .timeit (stmt = 'base.r2t(R1)' , setup = transforms_setup , number = N )
59
- result ("base.r2t" , t )
58
+ # t = timeit.timeit(stmt='base.r2t(R1)', setup=transforms_setup, number=N)
59
+ # result("base.r2t", t)
60
60
61
- t = timeit .timeit (stmt = 'T1 @ T2' , setup = transforms_setup , number = N )
62
- result ("4x4 @" , t )
61
+ # t = timeit.timeit(stmt='T1 @ T2', setup=transforms_setup, number=N)
62
+ # result("4x4 @", t)
63
63
64
- t = timeit .timeit (stmt = 'T1[:3,:3] @ T2[:3,:3] + T1[:3,:3] @ T2[:3,3]' , setup = transforms_setup , number = N )
65
- result ("R1*R2, R1*t" , t )
64
+ # t = timeit.timeit(stmt='T1[:3,:3] @ T2[:3,:3] + T1[:3,:3] @ T2[:3,3]', setup=transforms_setup, number=N)
65
+ # result("R1*R2, R1*t", t)
66
66
67
- t = timeit .timeit (stmt = '(Rt1.R @ Rt2.R, Rt1.R @ Rt2.t)' , setup = transforms_setup , number = N )
68
- result ("T1 * T2 (R, t)" , t )
67
+ # t = timeit.timeit(stmt='(Rt1.R @ Rt2.R, Rt1.R @ Rt2.t)', setup=transforms_setup, number=N)
68
+ # result("T1 * T2 (R, t)", t)
69
69
70
- t = timeit .timeit (stmt = 'base.trinv(T1)' , setup = transforms_setup , number = N )
71
- result ("base.trinv" , t )
70
+ # t = timeit.timeit(stmt='base.trinv(T1)', setup=transforms_setup, number=N)
71
+ # result("base.trinv", t)
72
72
73
- t = timeit .timeit (stmt = '(Rt1.R.T, -Rt1.R.T @ Rt1.t)' , setup = transforms_setup , number = N )
74
- result ("base.trinv (R,t)" , t )
73
+ # t = timeit.timeit(stmt='(Rt1.R.T, -Rt1.R.T @ Rt1.t)', setup=transforms_setup, number=N)
74
+ # result("base.trinv (R,t)", t)
75
75
76
- t = timeit .timeit (stmt = 'np.linalg
10000
.inv(T1)' , setup = transforms_setup , number = N )
77
- result ("np.linalg.inv" , t )
76
+ # t = timeit.timeit(stmt='np.linalg.inv(T1)', setup=transforms_setup, number=N)
77
+ # result("np.linalg.inv", t)
78
78
79
- t = timeit .timeit (stmt = 'T1 @ v2' , setup = transforms_setup , number = N )
80
- result ("(4,4) * (4,)" , t )
79
+ # t = timeit.timeit(stmt='T1 @ v2', setup=transforms_setup, number=N)
80
+ # result("(4,4) * (4,)", t)
81
81
82
- # ------------------------------------------------------------------------- #
83
- table .rule ()
82
+ # # ------------------------------------------------------------------------- #
83
+ # table.rule()
84
84
85
- t = timeit .timeit (stmt = 'SE3()' , setup = transforms_setup , number = N )
86
- result ("SE3()" , t )
85
+ # t = timeit.timeit(stmt='SE3()', setup=transforms_setup, number=N)
86
+ # result("SE3()", t)
87
87
88
- t = timeit .timeit (stmt = 'SE3.Rx(0.2)' , setup = transforms_setup , number = N )
89
- result ("SE3.Rx()" , t )
88
+ # t = timeit.timeit(stmt='SE3.Rx(0.2)', setup=transforms_setup, number=N)
89
+ # result("SE3.Rx()", t)
90
90
91
- t = timeit .timeit (stmt = 'T1[:3,:3]' , setup = transforms_setup , number = N )
92
- result ("T1[:3,:3]" , t )
91
+ # t = timeit.timeit(stmt='T1[:3,:3]', setup=transforms_setup, number=N)
92
+ # result("T1[:3,:3]", t)
93
93
94
- t = timeit .timeit (stmt = 'X1.A' , setup = transforms_setup , number = N )
95
- result ("SE3.A" , t )
94
+ # t = timeit.timeit(stmt='X1.A', setup=transforms_setup, number=N)
95
+ # result("SE3.A", t)
96
96
97
- t = timeit .timeit (stmt = 'SE3(T1)' , setup = transforms_setup , number = N )
98
- result ("SE3(T1)" , t )
97
+ # t = timeit.timeit(stmt='SE3(T1)', setup=transforms_setup, number=N)
98
+ # result("SE3(T1)", t)
99
99
100
- t = timeit .timeit (stmt = 'SE3(T1, check=False)' , setup = transforms_setup , number = N )
101
- result ("SE3(T1 check=False)" , t )
100
+ # t = timeit.timeit(stmt='SE3(T1, check=False)', setup=transforms_setup, number=N)
101
+ # result("SE3(T1 check=False)", t)
102
102
103
- t = timeit .timeit (stmt = 'SE3([T1], check=False)' , setup = transforms_setup , number = N )
104
- result ("SE3([T1])" , t )
103
+ # t = timeit.timeit(stmt='SE3([T1], check=False)', setup=transforms_setup, number=N)
104
+ # result("SE3([T1])", t)
105
105
106
- t = timeit .timeit (stmt = 'X1 * X2' , setup = transforms_setup , number = N )
107
- result ("SE3 * SE3" , t )
106
+ # t = timeit.timeit(stmt='X1 * X2', setup=transforms_setup, number=N)
107
+ # result("SE3 * SE3", t)
108
108
109
- t = timeit .timeit (stmt = 'X1.inv()' , setup = transforms_setup , number = N )
110
- result ("SE3.inv" , t )
109
+ # t = timeit.timeit(stmt='X1.inv()', setup=transforms_setup, number=N)
110
+ # result("SE3.inv", t)
111
111
112
- t = timeit .timeit (stmt = 'X1 * v' , setup = transforms_setup , number = N )
113
- result ("SE3 * v" , t )
112
+ # t = timeit.timeit(stmt='X1 * v', setup=transforms_setup, number=N)
113
+ # result("SE3 * v", t)
114
114
115
- t = timeit .timeit (stmt = 'a = X1.log()' , setup = transforms_setup , number = N )
116
- result ("SE3.log()" , t )
115
+ # t = timeit.timeit(stmt='a = X1.log()', setup=transforms_setup, number=N)
116
+ # result("SE3.log()", t)
117
117
118
- # ------------------------------------------------------------------------- #
119
- quat_setup = '''
120
- from spatialmath import base
121
- from spatialmath import UnitQuaternion
122
- import numpy as np
123
- q1 = base.rand()
124
- q2 = base.rand()
125
- v = np.r_[1,2,3]
126
- Q1 = UnitQuaternion.Rx(0.2)
127
- Q2 = UnitQuaternion.Ry(0.3)
128
- '''
129
- table .rule ()
118
+ # # ------------------------------------------------------------------------- #
119
+ # quat_setup = '''
120
+ # from spatialmath import base
121
+ # from spatialmath import UnitQuaternion
122
+ # import numpy as np
123
+ # q1 = base.rand()
124
+ # q2 = base.rand()
125
+ # v = np.r_[1,2,3]
126
+ # Q1 = UnitQuaternion.Rx(0.2)
127
+ # Q2 = UnitQuaternion.Ry(0.3)
128
+ # '''
129
+ # table.rule()
130
130
131
- t = timeit .timeit (stmt = 'a = UnitQuaternion()' , setup = quat_setup , number = N )
132
- result ("UnitQuaternion() " , t )
131
+ # t = timeit.timeit(stmt='a = UnitQuaternion()', setup=quat_setup, number=N)
132
+ # result("UnitQuaternion() ", t)
133
133
134
- t = timeit .timeit (stmt = 'a = UnitQuaternion.Rx(0.2)' , setup = quat_setup , number = N )
135
- result ("UnitQuaternion.Rx " , t )
134
+ # t = timeit.timeit(stmt='a = UnitQuaternion.Rx(0.2)', setup=quat_setup, number=N)
135
+ # result("UnitQuaternion.Rx ", t)
136
136
137
- t = timeit .timeit (stmt = 'a = Q1 * Q2' , setup = quat_setup , number = N )
138
- result ("UnitQuaternion * UnitQuaternion" , t )
137
+ # t = timeit.timeit(stmt='a = Q1 * Q2', setup=quat_setup, number=N)
138
+ # result("UnitQuaternion * UnitQuaternion", t)
139
139
140
- t = timeit .timeit (stmt = 'a = Q1 * v' , setup = quat_setup , number = N )
141
- result ("UnitQuaternion * v" , t )
140
+ # t = timeit.timeit(stmt='a = Q1 * v', setup=quat_setup, number=N)
141
+ # result("UnitQuaternion * v", t)
142
142
143
- t = timeit .timeit (stmt = 'a = base.qqmul(q1,q2)' , setup = quat_setup , number = N )
144
- result ("base.qqmul" , t )
143
+ # t = timeit.timeit(stmt='a = base.qqmul(q1,q2)', setup=quat_setup, number=N)
144
+ # result("base.qqmul", t)
145
145
146
- t = timeit .timeit (stmt = 'a = base.qvmul(q1,v)' , setup = quat_setup , number = N )
147
- result ("base.qvmul" , t )
146
+ # t = timeit.timeit(stmt='a = base.qvmul(q1,v)', setup=quat_setup, number=N)
147
+ # result("base.qvmul", t)
148
148
149
149
150
150
151
- # ------------------------------------------------------------------------- #
152
- twist_setup = '''
153
- from spatialmath import SE3, Twist3
154
- from spatialmath import base
155
- import numpy as np
156
- t1 = SE3.Rand().Twist3()
157
- t2 = SE3.Rand().Twist3()
158
- T1 = SE3.Rand()
159
- s = [1,2,3,4,5,6]
160
- v = [1,2,3]
161
- '''
162
- table .rule ()
163
- t = timeit .timeit (stmt = 'a = Twist3()' , setup = twist_setup , number = N )
164
- result ("Twist3()" , t )
151
+ # # ------------------------------------------------------------------------- #
152
+ # twist_setup = '''
153
+ # from spatialmath import SE3, Twist3
154
+ # from spatialmath import base
155
+ # import numpy as np
156
+ # from math import cos
157
+ # S1 = SE3.Rand().Twist3()
158
+ # S2 = SE3.Rand().Twist3()
159
+ # X1 = SE3.Rand()
160
+ # T1 = X1.A
161
+ # A1 = X1.Ad()
162
+ # se3 = S1.se3()
163
+ # s = np.r_[1,2,3,4,5,6]
164
+ # v = np.r_[1,2,3]
165
+ # '''
166
+ # table.rule()
167
+ # t = timeit.timeit(stmt='a = Twist3()', setup=twist_setup, number=N)
168
+ # result("Twist3()", t)
169
+
170
+ # t = timeit.timeit(stmt='a = X1.Twist3()', setup=twist_setup, number=N)
171
+ # result("SE3.Twist3()", t)
165
172
166
- t = timeit .timeit (stmt = 'a = T1.Twist3() ' , setup = twist_setup , number = N )
167
- result ("SE3. Twist3() " , t )
173
+ # t = timeit.timeit(stmt='a = S1 * S2 ', setup=twist_setup, number=N)
174
+ # result("Twist3 * Twist3 ", t)
168
175
169
- t = timeit .timeit (stmt = 'a = t1 * t2 ' , setup = twist_setup , number = N )
170
- result ("Twist3 * Twist3 " , t )
176
+ # t = timeit.timeit(stmt='a = S1.inv() ', setup=twist_setup, number=N)
177
+ # result("Twist3.inv() ", t)
171
178
172
- t = timeit .timeit (stmt = 'a = t1.inv ()' , setup = twist_setup , number = N )
173
- result ("Twist3.inv ()" , t )
179
+ # t = timeit.timeit(stmt='a = S1.Ad ()', setup=twist_setup, number=N)
180
+# result("Twist3.Ad ()", t)
174
181
175
- t = timeit .timeit (stmt = 'a = t1.Ad( )' , setup = twist_setup , number = N )
176
- result ("Twist3.Ad ()" , t )
182
+ # t = timeit.timeit(stmt='a = S1.exp(1 )', setup=twist_setup, number=N)
183
+ # result("Twist3.Exp ()", t)
177
184
178
- t = timeit .timeit (stmt = 'a = t1.exp(1)' , setup = twist_setup , number = N )
179
- result ("Twist3.Exp()" , t )
185
+ # t = timeit.timeit(stmt='a = base.skewa(v)', setup=twist_setup, number=N)
186
+ # result("skew", t)
187
+
188
+ # t = timeit.timeit(stmt='a = base.skewa(s)', setup=twist_setup, number=N)
189
+ # result("skewa", t)
190
+
191
+ # t = timeit.timeit(stmt='a = base.vexa(se3)', setup=twist_setup, number=N)
192
+ # result("vexa", t)
193
+
194
+ # t = timeit.timeit(stmt='a = base.trlog(T1)', setup=twist_setup, number=N)
195
+ # result("trlog", t)
196
+
197
+ # t = timeit.timeit(stmt='a = base.trlog(T1, twist=True)', setup=twist_setup, number=N)
198
+ # result("trlog as twist", t)
199
+
200
+ # t = timeit.timeit(stmt='a = base.trexp(se3)', setup=twist_setup, number=N)
201
+ # result("trexp", t)
202
+
203
+ # t = timeit.timeit(stmt='a = A1 @ s', setup=twist_setup, number=N)
204
+ # result("(6,6) * (6,)", t)
205
+
206
+ # t = timeit.timeit(stmt='a = base.rodrigues(v)', setup=twist_setup, number=N)
207
+ # result("rodrigues", t)
208
+
209
+ # t = timeit.timeit(stmt='a = cos(0.3)', setup=twist_setup, number=N)
210
+ # result("math.cos", t)
211
+
212
+ # t = timeit.timeit(stmt='a = np.cos(0.3)', setup=twist_setup, number=N)
213
+ # result("np.cos", t)
214
+
215
+ # ------------------------------------------------------------------------- #
216
+ misc_setup = '''
217
+ from spatialmath import base
218
+ import numpy as np
219
+ s = np.r_[1,2,3,4,5,6]
220
+ '''
221
+ table .rule ()
180
222
181
- t = timeit .timeit (stmt = 'a = base.skewa(v) ' , setup = twist_setup , number = N )
182
- result ("skew " , t )
223
+ t = timeit .timeit (stmt = 'a = np.inner(s,s).sum() ' , setup = misc_setup , number = N )
224
+ result ("inner() " , t )
183
225
184
- t = timeit .timeit (stmt = 'a = base.skewa (s)' , setup = twist_setup , number = N )
185
- result ("skewa " , t )
226
+ t = timeit .timeit (stmt = 'a = np.linalg.norm (s) ** 2 ' , setup = misc_setup , number = N )
227
+ result ("norm**2 " , t )
186
228
229
+ t = timeit .timeit (stmt = 'a = (s ** 2).sum()' , setup = misc_setup , number = N )
230
+ result ("s**2.sum()" , t )
187
231
232
+ t = timeit .timeit (stmt = 'a = np.sum(s ** 2)' , setup = misc_setup , number = N )
233
+ result ("np.sum(s ** 2)" , t )
188
234
189
235
table .print ()
0 commit comments