summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien George <damien@micropython.org>2022-11-07 15:11:14 +1100
committerDamien George <damien@micropython.org>2022-11-07 17:18:42 +1100
commit5987130afdf1063f06d5bf3c8826d36435834649 (patch)
tree8c81abe8edf05d431bb61c973cc5a43c117892ae
parent1ed740b152b4acd47aeb02da114cdb3150009a13 (diff)
webassembly/Makefile: Change compiler optimisation from O3 to Os.
Emscripten strongly advises the use of optimisation when compiling with ASYNCIFY enabled. Testing the difference betwen O3 and Os for various configurations gives: flags firmware.wasm micropython.js perf -O3 -s ASYNCIFY 1342003 212845 0 (baseline) -O3 -s ASYNCIFY -s WASM=0 - 7064750 -30% -O3 367131 196569 +140% -O3 -s WASM=0 - 2818260 +30% -Os -s ASYNCIFY 1135450 213064 +40% -Os -s ASYNCIFY -s WASM=0 - 6239768 -30% -Os 295028 196569 +180% -Os -s WASM=0 - 2271358 +30% The first row is prior to this commit. The second and third columns show firmware size (add them to get the total size). The fourth column shows the approximate change in performance compared to the baseline. The performance was measured using run-perfbench.py and the error was large, up to 20%, although general trends in the change in performance could still be seen. In summary, using using Os instead of O3 makes it a little bit faster in all cases, and smaller output (wasm/js) in all cases. Signed-off-by: Damien George <damien@micropython.org>
-rw-r--r--ports/webassembly/Makefile2
1 files changed, 1 insertions, 1 deletions
diff --git a/ports/webassembly/Makefile b/ports/webassembly/Makefile
index 09660cd39..db42d0096 100644
--- a/ports/webassembly/Makefile
+++ b/ports/webassembly/Makefile
@@ -15,7 +15,7 @@ INC += -I$(TOP)
INC += -I$(BUILD)
CFLAGS += -std=c99 -Wall -Werror -Wdouble-promotion -Wfloat-conversion
-CFLAGS += -O3 -DNDEBUG
+CFLAGS += -Os -DNDEBUG
CFLAGS += $(INC)
SRC_SHARED = $(addprefix shared/,\