Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Slower function execution with Lightpad firmware 1.1.0 #64

Open
anthonyalfimov opened this issue May 29, 2020 · 4 comments
Open

Slower function execution with Lightpad firmware 1.1.0 #64

anthonyalfimov opened this issue May 29, 2020 · 4 comments
Labels
littlefoot Issues and requests regarding firmware and Littlefoot lang

Comments

@anthonyalfimov
Copy link
Owner

anthonyalfimov commented May 29, 2020

Function execution with Lightpad firmware 1.1.0 is slower than what we measured using the same exact scripts in July 2019 (firmware version 0.4.4).

After manually downgrading my Lightpad to firmware version 0.4.4, I obtained the same test results as in July 2019. This suggests that firmware 1.1.0 is the cause of the problem.

Littlefoot performance: firmware 0.4.4 vs firmware 1.1.0 | API Mode

By manually downgrading my Lightpad to firmware version 0.4.4, I was able to directly compare the performance of Littlefoot features between firmwares 1.1.0 and 0.4.4.

1000x data retrieval operations

Benchmark script: BMK_DataRetrievalPerformance.littlefoot.zip

In this test we measure the time it takes to perform 1000 assignments of integer data to a variable from:

Data source 0.4.4 1.1.0 Average δ
int literal 8 - 10 ms 16 - 18 ms +89%
int constant 8 - 10 ms 16 - 19 ms +94%
int variable 9 - 10 ms 17 - 19 ms +89%
metadata int variable 9 - 10 ms 17 - 19 ms +89%
heap 12 - 13 ms 21 - 24 ms +80%
metadata vector element 22 - 23 ms 36 - 39 ms +67%
local config item 33 - 36 ms 39 ms +13%

1000x empty loop iterations

Benchmark script: BMK_LoopPerformance.littlefoot.zip

0.4.4 1.1.0 Average δ
7 - 8 ms 13 ms +73%

1000x empty function calls

Benchmark script: BMK_FunctionCallPerformance.littlefoot.zip

0.4.4 1.1.0 Average δ
9 ms 15 - 16 ms +72%

1000x empty conditional statements

Benchmark script: BMK_ConditionalPerformance.littlefoot.zip

0.4.4 1.1.0 Average δ
9 - 10 ms 15 - 16 ms +63%

Dynamic Controls 2.0.4 performance: firmware 0.4.4 vs firmware 1.1.0 | API Mode

Dynamic Controls

Benchmark script and modes: BMK_DC_204_NS.zip
Test points are marked with BENCHMARK in code.

100x touchMove() executions: Ctrl 1, no ctrl layering

0.4.4 1.1.0
16 XYs, latch, pressure 147 - 148 ms 227 - 238 ms
16 XYs, latch, no pressure 138 - 141 ms 221 - 232 ms
16 Faders, latch, pressure 139 - 141 ms 220 - 232 ms
16 Buttons, latch, pressure 123 - 128 ms 197 - 207 ms
16 Notes, latch, pressure 123 - 128 ms 197 - 208 ms

100x touchMove() executions: 16 XYs, latch, pressure

0.4.4 1.1.0
Ctrl 1, no ctrl layering 147 - 148 ms 227 - 238 ms
Ctrl 16, no ctrl layering 100 - 102 ms 155 - 161 ms
Ctrl 1, ctrl layering 147 - 148 ms 227 - 238 ms
Ctrl 16, ctrl layering 157 - 160 ms 250 - 262 ms

10x repaint() execution: 16 XYs, latch, pressure

0.4.4 1.1.0
40 - 43 ms 58 - 64 ms

10x handleMIDI() executions: 16 XYs, latch

0.4.4 1.1.0
Correct channel and ctrl 6 - 7 ms 11 - 12 ms
Correct channel, wrong ctrl 6 - 7 ms 11 - 12 ms
Wrong channel 3 - 4 ms 5 - 6 ms

Dynamic Controls LE

Benchmark script and modes: BMK_DC-LE_204_NS.zip
Test points are marked with BENCHMARK in code.

100x touchMove() executions: Ctrl 1, no ctrl layering

0.4.4 1.1.0
25 Faders, latch 192 - 197 ms 303 - 319 ms
25 Button, latch 179 - 180 ms 283 - 301 ms
25 Notes, latch 180 - 181 ms 284 - 301 ms

100x touchMove() executions: 25 Faders, latch

0.4.4 1.1.0
Ctrl 1, no ctrl layering 192 - 197 ms 303 - 319 ms
Ctrl 25, no ctrl layering 100 ms 153 - 162 ms
Ctrl 1, ctrl layering 192 - 197 ms 303 - 319 ms
Ctrl 25, ctrl layering 192 - 197 ms 304 - 320 ms

10x repaint() execution: 25 Faders, latch

0.4.4 1.1.0
64 - 67 ms 98 - 104 ms

10x handleMIDI() executions: 25 Faders, latch

0.4.4 1.1.0
Correct channel and ctrl 7 - 8 ms 12 - 13 ms
Correct channel, wrong ctrl 7 - 8 ms 12 - 13 ms
Wrong channel 3 - 4 ms 6 - 7 ms

Benchmark comparison: July 2019 (firmware 0.4.4) vs May 2020 (firmware 1.1.0) | API Mode

Note: running the same benchmarks as in July 2019 today on firmware 0.4.4 gave the same results.

Dynamic Controls 1.2.9 Alpha

Benchmark script and modes: DC_129Alpha_Benchmark.zip
Test points are marked with BENCHMARK in code.

100x touchMove() executions: 16 XY, momentary, pressure

0.4.4 (July 2019) 1.1.0 (May 2020) Average δ
Ctrl 1, no overlaps 148 - 149 ms 229 - 239 ms +58%
Ctrl 16, no overlaps 100 - 102 ms 157 - 161 ms +57%
Ctrl 1, overlaps 148 - 149 ms 229 - 239 ms +58%
Ctrl 16, overlaps 157 - 161 ms 250 - 264 ms +62%

10x handleMIDI() executions: 16 XY, latch

0.4.4 (July 2019) 1.1.0 (May 2020) Average δ
Correct channel and ctrl 7 - 8 ms 11 - 12 ms +53%
Correct channel, wrong ctrl 7 - 8 ms 11 - 12 ms +53%
Wrong channel 4 - 5 ms 5 - 6 ms +22%

Dynamic Controls 1.2.8 Alpha

Benchmark script and modes: DC_128Alpha_Benchmark.zip
Test points are marked with BENCHMARK in code.

1x repaint() execution: 16 XY, momentary, pressure, no overlaps

0.4.4 (July 2019) 1.1.0 (May 2020) Average δ
4 - 5 ms 6 - 7 ms +44%

100x touchMove() executions: Ctrl 1

0.4.4 (July 2019) 1.1.0 (May 2020) Average δ
16 XY, momentary, pressure 147 - 148 ms 229 - 239 ms +59%
16 XY, latch, pressure 147 - 148 ms 229 - 239 ms +59%
16 XY, latch, no pressure 139 - 142 ms 221 - 231 ms +61%
16 Faders, latch, pressure 139 - 141 ms 220 - 232 ms +61%
16 Button, latch, pressure 124 - 128 ms 197 - 208 ms +61%
16 Notes, latch, pressure 124 - 128 ms 198 - 209 ms +62%

Littlefoot MIDI functions

Benchmark script: midiPerformance.zip

0.4.4 (July 2019) 1.1.0 (May 2020) Average δ
100x sendMIDI() (CC) 3 - 4 ms 3 - 4 ms -
100x sendCC() 3 - 4 ms 3 - 5 ms -
100x sendNoteOn() 22 ms 3 - 4 ms -84%
100x sendNoteOff() 22 ms 5 - 6 ms -75%

Note:
I’ve noticed weird behaviour with Lightpad sending Note On messages via both sendMIDI() and sendNoteOn() functions.

When attempting to repeatedly send identical Note On messages (same channel, note number and velocity), Lightpad stops transmitting these messages after sending a seemingly random number of them. Sending the same message becomes possible again only after a Note Off message for the same MIDI channel and note number has been transmitted. This behaviour occurs regardless of the useMPEDuplicateFilter() state.

I can’t imagine a situation where this behaviour can cause any issues, but it seems weird nonetheless.

@anthonyalfimov anthonyalfimov added the littlefoot Issues and requests regarding firmware and Littlefoot lang label Dec 19, 2020
@up4digital
Copy link

Hi can you tel me where I can download firmware 0.4.4 from to downgrade? Thanks a lot

@up4digital
Copy link

Hi can you tel me where I can download firmware 0.4.4 from to downgrade? Thanks a lot

Found it here:
https://support.roli.com/support/discussions/topics/36000012422
Now wondering if it will work with latest ROLI dashboard that I've currently installed on my MAC... if not, any chance to get ROLI dashboard downgraded as well ? Again, any link to download it from ? Thanks

@anthonyalfimov
Copy link
Owner Author

@up4digital If the firmware 0.4.4 doesn't work with the current version of Dashboard, you could try contacting ROLI support and asking for an older installer. Looks like Dashboard 4.1.8 was released around the same time.

@up4digital
Copy link

@up4digital If the firmware 0.4.4 doesn't work with the current version of Dashboard, you could try contacting ROLI support and asking for an older installer. Looks like Dashboard 4.1.8 was released around the same time.

Thanks, I will try to ask

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
littlefoot Issues and requests regarding firmware and Littlefoot lang
Projects
None yet
Development

No branches or pull requests

2 participants