-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Hi,
thanks for creating this cool library - it is the fastest one i found so far 👍
One idea to make it even faster would be to turn on higher compiler optimisations for the core functions, see https://gcc.gnu.org/onlinedocs/gcc/Function-Specific-Option-Pragmas.html
I did some experiments, by adding the following to xtm1638.cpp
at the top of the file, just after comments and includes are done (i.e. , directly after #include "xtm1638.h")
#pragma GCC push_options
#pragma GCC optimize ("O2")
//#pragma GCC optimize ("O3")
at end of the file
#pragma GCC pop_options
Testcase:
"example04" on my MEGA2560 - default options, Port manipulation mode, cached segments enabled
- normal optimization without pragma:
- program 4440 Bytes (1%), glabal data 298 Bytes (3%)
- scores = 60003 (with LEDs), 27204 (no LEDs)
- more optimization (-O2):
- program 4492 Bytes (1%), glabal data 298 bytes (3%) -> FLASH usage increase: 52 bytes
- scores = 26143 (with LEDs), 15102 (no LEDs) -> speed gain: 2.3x / 1.8x
- even more optimization (-O3):
- program 13402 Bytes (5%), glabal data 298 bytes (3%) -> FLASH usage increase: 9 Kbytes
- scores = 24103 (with LEDs), 15280 (no LEDs) -> speed gain: 2.5x / 1.8x
Metadata
Metadata
Assignees
Labels
No labels