# HG changeset patch # User Andrey Skvortsov # Date 1527262445 -10800 # Node ID a66062a205ae747f8a9c92446cb8c10bcbc26586 # Parent b8f795bdfe9ff49f49d9a0afe2a47070a5ae5ad6 Build by default with optimization level -O2 for GCC before -O0 was used by default, that caused pretty bad performance. Amd64, i6700k, 4200MHz, GNU/Linux (non-RT kernel), gcc 7.2.0 ------------------------------------- Optimization | EN/ENO |no EN/ENO | ------------------------------------- default | 11 | 9.5 | -O3 | 3.9 | 5.2 | -O2 | 4 | 4.8 | -Os | 4.1 | 3.5 | -Ofast | 3.9 | 5.2 | ------------------------------------- ARM, BBB Cortex-A8, 600Mhz, GNU/Linux, gcc 4.6.3 ------------------------------------- Optimization | EN/ENO |no EN/ENO | ------------------------------------- default | 273 | 226 | -O3 | 141.8 | 106.2 | -O2 | 142 | 107 | -Os | 152.5 | 112.2 | -Ofast | 141.7 | 106.2 | ------------------------------------- For embedded systems with size constaints (like Cortex-Mx, AVR and so on) I usually use -Os. It gets pretty good results. For GNU/Linux-based systems -O2 is usually a good choice, as you see the test results. diff -r b8f795bdfe9f -r a66062a205ae targets/toolchain_gcc.py --- a/targets/toolchain_gcc.py Fri May 25 17:40:29 2018 +0300 +++ b/targets/toolchain_gcc.py Fri May 25 18:34:05 2018 +0300 @@ -190,7 +190,7 @@ status, _result, _err_result = ProcessLogger( self.CTRInstance.logger, - "\"%s\" -c \"%s\" -o \"%s\" %s %s" % + "\"%s\" -c \"%s\" -o \"%s\" -O2 %s %s" % (self.compiler, CFile, objectfilename, Builder_CFLAGS, CFLAGS) ).spin()