@bplus
@Gets
I have changed the compiler settings many times (just experimenting with program execution speed) and I haven't ever noticed the "recent files list" being erased like you described earlier; but, I have noticed that whenever the compiler options are changed the user is informed that the loaded file has been changed (even when no file is loaded).
The compiler settings are actually saved (somewhere) as soon as the <OK> button is clicked on in the compiler settings window so there's really no need to display an asterisk beside the filename and prompt to resave it before closing the IDE.
@justsomeguy
@Pete
and anyone else that might be interested --
In addition to the optimizations already suggested by a740g which are :
1) Compile program with C++ optimization flag.
2) Strip C++ symbols from executable.
--->>
You might want to give this a try and see how it works for you :
First, make sure that all 3 of the options at the top are _NOT_ checked.
Next, enter this in the C++ Compiler Flags box :
-O3 -s -mtune=native
---or---
-O3 -s -DNDEBUG -mtune=native -- This makes the executable a little smaller by removing more DEBUG info.
(Either of the options above currently work best for me.)
-O3 -s -mcpu=native -march=native -mtune=native
(This could also be used, but read more about why I avoid using -march= below...)
Note : When the top 2 options are selected it's basically the same as :
-O2 -s
being entered into the C++ Compiler Flags box.
Also, please note that all of the examples above use a CAPITAL "O" followed by a number or a lowercase letter.
When I was using an older Windows Vista computer -Os would work better than -O2 but now that I'm using a newer Windows 11 computer, -O3 works better than -O2 or -Os.
-----------------------------
Even more info for further reading :
This info (and more) is from :
https://maskray.me/blog/2022-08-28-march-mcpu-mtune
-march=, -mcpu=, and -mtune=
In GCC and Clang, there are three major options specifying the architecture and microarchitecture the generated code can run on. The general semantics are described below, but each target machine may assign different semantics.
-march=X: (execution domain) Generate code that can use instructions available in the architecture X
-mtune=X: (optimization domain) Optimize for the microarchitecture X, but does not change the ABI or make assumptions about available instructions
-mcpu=X: Specify both -march= and -mtune= but can be overridden by the two options. The supported values are generally the same as -mtune=. The architecture name is inferred from X
-----------------------------------------
This ( and more) is from :
https://stackoverflow.com/questions/1055...from-mtune
If you use -march then GCC will be free to generate instructions that work on the specified CPU, but (typically) not on earlier CPUs in the architecture family.
If you just use -mtune, then the compiler will generate code that works on any of them, but will favour instruction sequences that run fastest on the specific CPU you indicated. e.g. setting loop-unrolling heuristics appropriately for that CPU.
-march=foo implies -mtune=foo unless you also specify a different -mtune. This is one reason why using -march is better than just enabling options like -mavx without doing anything about tuning.
Caveat: -march=native on a CPU that GCC doesn't specifically recognize will still enable new instruction sets that GCC can detect, but will leave -mtune=generic. Use a new enough GCC that knows about your CPU if you want it to make good code.
------------------------------------------------------------------------------------------------------
This (and more) is from :
https://stackoverflow.com/questions/4449...ually-work
There's this related question: GCC: how is march different from mtune?
However, the existing answers don't go much further than the GCC manual itself. At most, we get:
If you use -mtune, then the compiler will generate code that works on any of them, but will favour instruction sequences that run fastest on the specific CPU you indicated.
and
The -mtune=Y option tunes the generated code to run faster on Y than on other CPUs it might run on.
---------------------------------------------------------------------------------------------------