Arduino-Shell icon indicating copy to clipboard operation
Arduino-Shell copied to clipboard

Measurement: Add benchmarks

Open mikaelpatel opened this issue 8 years ago • 5 comments

A set of benchmarks are needed to allow measurement of performance tuning efforts.

mikaelpatel avatar Mar 15 '16 07:03 mikaelpatel

Please see commit https://github.com/mikaelpatel/Arduino-Shell/commit/cbfed3dbd954c7a102632c259613f2282b3283eb. This gives some performance measurements to work with.

mikaelpatel avatar Mar 15 '16 21:03 mikaelpatel

The output of the benchmark sketch is; script:us:stack depth:stack contents

ShellBenchmarks: started
:16:0:
 :8:0:
,:8:0:
T:16:1: -1
F:16:2: -1 0
0:16:3: -1 0 0
1:12:4: -1 0 0 1
-1:16:5: -1 0 0 1 -1
10:16:6: -1 0 0 1 -1 10
-10:16:7: -1 0 0 1 -1 10 -10
100:20:8: -1 0 0 1 -1 10 -10 100
-100:24:9: -1 0 0 1 -1 10 -10 100 -100
s:12:9: -1 0 0 1 -1 10 -10 -100 100
ss:28:9: -1 0 0 1 -1 10 -10 -100 100
r:16:9: -1 0 0 1 -1 10 -100 100 -10
u:16:10: -1 0 0 1 -1 10 -100 100 -10 -10
o:16:11: -1 0 0 1 -1 10 -100 100 -10 -10 -10
oo:32:13: -1 0 0 1 -1 10 -100 100 -10 -10 -10 -10 -10
d:12:12: -1 0 0 1 -1 10 -100 100 -10 -10 -10 -10
j:16:13: -1 0 0 1 -1 10 -100 100 -10 -10 -10 -10 12
c:16:0:
10000,1000,100,10,1:120:5: 10000 1000 100 10 1
~:12:5: 10000 1000 100 10 -2
n:16:5: 10000 1000 100 10 2
+:16:4: 10000 1000 100 12
-:20:3: 10000 1000 88
*:16:2: 10000 22464
/:32:1: 0
1+:24:1: 1
1-:24:1: 0
0<:28:1: 0
0>:28:1: 0
C:12:0:
0@:28:1: 1024
0!:32:0:
{}x:48:0:
F{}i:56:0:
T{}i:64:0:
F{}{}e:80:0:
T{}{}e:80:0:
{F}w:68:0:
1,0{}l:64:0:
1,1{}l:80:1: 1
1,1{d}l:96:1: 1
1,10{d}l:412:1: 1
1,100{d}l:3524:1: 1
1D:1028:1: 1
10D:10032:1: 1
M:16:2: 1 202
13O:32:2: 1 202
1,13W:52:2: 1 202
13H:36:2: 1 202
0,13W:56:2: 1 202
13L:32:2: 1 202
13R:32:3: 1 202 0
13X:36:3: 1 202 0
0A:232:4: 1 202 0 437
100,3P:60:4: 1 202 0 437
C:12:0:
0f:3460:0:
`abs:52:1: 0
`min:56:2: 0 1
`max:68:3: 0 1 2
`fac:72:4: 0 1 2 3
`5fac:88:5: 0 1 2 3 4
-10`abs@x:212:6: 0 1 2 3 4 10
-10`abs::204:7: 0 1 2 3 4 10 10
-10,10`min::216:8: 0 1 2 3 4 10 10 -10
-10,10`max::260:9: 0 1 2 3 4 10 10 -10 10
5`fac::328:10: 0 1 2 3 4 10 10 -10 10 120
`5fac::448:11: 0 1 2 3 4 10 10 -10 10 120 120

mikaelpatel avatar Mar 15 '16 22:03 mikaelpatel

Performance improvement https://github.com/mikaelpatel/Arduino-Shell/commit/e1efda8e77372a7f1653a4ceabeee40cb0c2b7d5.

ShellBenchmarks: started
:20:0:
 :0:0:
,:4:0:
T:12:1: -1
F:12:2: -1 0
0:8:3: -1 0 0
1:8:4: -1 0 0 1
-1:12:5: -1 0 0 1 -1
10:20:6: -1 0 0 1 -1 10
-10:12:7: -1 0 0 1 -1 10 -10
100:16:8: -1 0 0 1 -1 10 -10 100
-100:16:9: -1 0 0 1 -1 10 -10 100 -100
s:8:9: -1 0 0 1 -1 10 -10 -100 100
ss:20:9: -1 0 0 1 -1 10 -10 -100 100
r:20:9: -1 0 0 1 -1 10 -100 100 -10
u:12:10: -1 0 0 1 -1 10 -100 100 -10 -10
o:12:11: -1 0 0 1 -1 10 -100 100 -10 -10 -10
oo:28:13: -1 0 0 1 -1 10 -100 100 -10 -10 -10 -10 -10
d:8:12: -1 0 0 1 -1 10 -100 100 -10 -10 -10 -10
j:12:13: -1 0 0 1 -1 10 -100 100 -10 -10 -10 -10 12
c:16:0:
10000,1000,100,10,1:112:5: 10000 1000 100 10 1
~:8:5: 10000 1000 100 10 -2
n:12:5: 10000 1000 100 10 2
+:12:4: 10000 1000 100 12
-:20:3: 10000 1000 88
*:12:2: 10000 22464
/:28:1: 0
1+:20:1: 1
1-:20:1: 0
0<:24:1: 0
0>:24:1: 0
C:8:0:
0@:20:1: 1024
0!:24:0:
{}x:44:0:
F{}i:52:0:
T{}i:60:0:
F{}{}e:76:0:
T{}{}e:76:0:
{F}w:64:0:
1,0{}l:56:0:
1,1{}l:72:1: 1
1,1{d}l:92:1: 1
1,10{d}l:400:1: 1
1,100{d}l:3484:1: 1
1D:1024:1: 1
10D:10032:1: 1
M:12:2: 1 201
13O:28:2: 1 201
1,13W:52:2: 1 201
13H:28:2: 1 201
0,13W:48:2: 1 201
13L:28:2: 1 201
13R:28:3: 1 201 0
13X:32:3: 1 201 0
0A:228:4: 1 201 0 441
100,3P:52:4: 1 201 0 441
C:8:0:
0f:3460:0:
`abs:44:1: 0
`min:52:2: 0 1
`max:64:3: 0 1 2
`fac:68:4: 0 1 2 3
`5fac:80:5: 0 1 2 3 4
-10`abs@x:204:6: 0 1 2 3 4 10
-10`abs::200:7: 0 1 2 3 4 10 10
-10,10`min::204:8: 0 1 2 3 4 10 10 -10
-10,10`max::244:9: 0 1 2 3 4 10 10 -10 10
5`fac::328:10: 0 1 2 3 4 10 10 -10 10 120
`5fac::432:11: 0 1 2 3 4 10 10 -10 10 120 120

mikaelpatel avatar Mar 16 '16 18:03 mikaelpatel

Performance improvement https://github.com/mikaelpatel/Arduino-Shell/commit/33a4a4ff90b296e62024790bc7be0d6f74e3b641.

ShellBenchmarks: started
:20:0:
 :4:0:
,:4:0:
T:8:1: -1
F:8:2: -1 0
0:12:3: -1 0 0
1:8:4: -1 0 0 1
-1:12:5: -1 0 0 1 -1
10:16:6: -1 0 0 1 -1 10
-10:16:7: -1 0 0 1 -1 10 -10
100:20:8: -1 0 0 1 -1 10 -10 100
-100:20:9: -1 0 0 1 -1 10 -10 100 -100
s:8:9: -1 0 0 1 -1 10 -10 -100 100
ss:16:9: -1 0 0 1 -1 10 -10 -100 100
r:8:9: -1 0 0 1 -1 10 -100 100 -10
u:8:10: -1 0 0 1 -1 10 -100 100 -10 -10
o:8:11: -1 0 0 1 -1 10 -100 100 -10 -10 -10
oo:20:13: -1 0 0 1 -1 10 -100 100 -10 -10 -10 -10 -10
d:8:12: -1 0 0 1 -1 10 -100 100 -10 -10 -10 -10
j:8:13: -1 0 0 1 -1 10 -100 100 -10 -10 -10 -10 12
c:8:0:
10000,1000,100,10,1:124:5: 10000 1000 100 10 1
~:8:5: 10000 1000 100 10 -2
n:4:5: 10000 1000 100 10 2
+:8:4: 10000 1000 100 12
-:12:3: 10000 1000 88
*:8:2: 10000 22464
/:24:1: 0
1+:16:1: 1
1-:16:1: 0
0<:20:1: 0
0>:20:1: 0
C:8:0:
0@:20:1: 1024
0!:24:0:
{}x:44:0:
F{}i:36:0:
T{}i:56:0:
F{}{}e:72:0:
T{}{}e:76:0:
{F}w:60:0:
1{1-q}w:92:0:
10{1-q}w:572:0:
100{1-q}w:5364:0:
1000{1-q}w:53256:0:
1,0{}l:56:0:
1,1{}l:84:1: 1
1,1{d}l:88:1: 1
1,10{d}l:388:1: 1
1,100{d}l:3280:1: 1
1,1000{d}l:32208:1: 1
1D:1024:1: 1
10D:10028:1: 1
M:12:2: 1 308
13O:24:2: 1 308
1,13W:48:2: 1 308
13H:28:2: 1 308
0,13W:48:2: 1 308
13L:28:2: 1 308
13R:28:3: 1 308 0
13X:32:3: 1 308 0
0A:228:4: 1 308 0 447
100,3P:52:4: 1 308 0 447
C:4:0:
1,1000{d1,13W}l:79252:0:
1,1000{d13H}l:60568:0:
1,1000{d0,13W}l:82400:0:
1,1000{d13L}l:60764:0:
1,1000{d13Rd}l:67992:0:
1,1000{d13R~13W}l:98120:0:
1,1000{d13X}l:64688:0:
1,1000{dA0d}l:168748:0:
0f:3456:0:
`abs:48:1: 0
`min:52:2: 0 1
`max:64:3: 0 1 2
`fac:68:4: 0 1 2 3
`5fac:80:5: 0 1 2 3 4
`x:68:6: 0 1 2 3 4 5
`y:80:7: 0 1 2 3 4 5 6
C:8:0:
-10`abs@x:192:1: 10
-10`abs::180:2: 10 10
-10,10`min::192:3: 10 10 -10
-10,10`max::236:4: 10 10 -10 10
5`fac::312:5: 10 10 -10 10 120
`5fac::420:6: 10 10 -10 10 120 120
`x@:84:7: 10 10 -10 10 120 120 0
`y!:92:6: 10 10 -10 10 120 120
`x,u@1+s!:144:6: 10 10 -10 10 120 120
`x@`y!:176:6: 10 10 -10 10 120 120

mikaelpatel avatar Mar 18 '16 07:03 mikaelpatel

Additional benchmarks and performance improvements https://github.com/mikaelpatel/Arduino-Shell/commit/516cc0c71c16f825b3f9a37ed79a8c7f5227d502.

ShellBenchmarks: started
:20:0:
 :4:0:
,:8:0:
T:8:1: -1
F:8:2: -1 0
0:12:3: -1 0 0
1:8:4: -1 0 0 1
-1:12:5: -1 0 0 1 -1
10:16:6: -1 0 0 1 -1 10
-10:16:7: -1 0 0 1 -1 10 -10
100:20:8: -1 0 0 1 -1 10 -10 100
-100:20:9: -1 0 0 1 -1 10 -10 100 -100
s:8:9: -1 0 0 1 -1 10 -10 -100 100
ss:16:9: -1 0 0 1 -1 10 -10 -100 100
r:8:9: -1 0 0 1 -1 10 -100 100 -10
u:12:10: -1 0 0 1 -1 10 -100 100 -10 -10
o:8:11: -1 0 0 1 -1 10 -100 100 -10 -10 -10
oo:20:13: -1 0 0 1 -1 10 -100 100 -10 -10 -10 -10 -10
d:8:12: -1 0 0 1 -1 10 -100 100 -10 -10 -10 -10
j:8:13: -1 0 0 1 -1 10 -100 100 -10 -10 -10 -10 12
c:8:0:
10000,1000,100,10,1:124:5: 10000 1000 100 10 1
~:8:5: 10000 1000 100 10 -2
n:4:5: 10000 1000 100 10 2
+:8:4: 10000 1000 100 12
-:8:3: 10000 1000 88
*:12:2: 10000 22464
/:24:1: 0
1+:16:1: 1
1-:16:1: 0
0<:28:1: 0
0>:20:1: 0
C:4:0:
0@:20:1: 16492
0!:24:0:
{}x:44:0:
F{}i:36:0:
T{}i:56:0:
F{}{}e:80:0:
T{}{}e:72:0:
{F}w:56:0:
1{1-q}w:88:0:
10{1-q}w:572:0:
100{1-q}w:5324:0:
1000{1-q}w:52744:0:
10000{1-q}w:526988:0:
1,0{}l:56:0:
1,1{}l:76:1: 1
1,1{d}l:96:1: 1
1,10{d}l:388:1: 1
1,100{d}l:3280:1: 1
1,1000{d}l:32200:1: 1
1,10000{d}l:321396:1: 1
1D:1024:1: 1
10D:10032:1: 1
M:8:2: 1 1164
13O:28:2: 1 1164
1,13W:48:2: 1 1164
13H:28:2: 1 1164
0,13W:48:2: 1 1164
13L:28:2: 1 1164
13R:24:3: 1 1164 0
13X:32:3: 1 1164 0
0A:224:4: 1 1164 0 463
100,3P:56:4: 1 1164 0 463
C:8:0:
1,1000{d1,13W}l:79256:0:
1,1000{d13H}l:60572:0:
1,1000{d0,13W}l:82400:0:
1,1000{d13L}l:60756:0:
1,1000{d13Rd}l:67996:0:
1,1000{d13R~13W}l:98120:0:
1,1000{d13X}l:64696:0:
1,1000{dA0d}l:168740:0:
0f:3464:0:
:abs:44:1: 0
:min:56:2: 0 1
:max:64:3: 0 1 2
:fac:72:4: 0 1 2 3
:fac5:92:5: 0 1 2 3 4
:x:72:6: 0 1 2 3 4 5
:y:80:7: 0 1 2 3 4 5 6
C:4:0:
-10:abs@x:188:1: 10
-10`abs:164:2: 10 10
-10,10`min:180:3: 10 10 -10
-10,10`max:220:4: 10 10 -10 10
5`fac:296:5: 10 10 -10 10 120
`fac5:412:6: 10 10 -10 10 120 120
C:8:0:
:x@:84:1: 0
:y!:96:0:
:x,u@1+s!:144:0:
:x@:y!:188:0:
C:4:0:
0f:3460:0:
:fib:44:1: 0
10`fib:37052:2: 0 55

mikaelpatel avatar Mar 23 '16 10:03 mikaelpatel