before using these flags for a deployment setting, you might want to
actually measure the benefits of using them.
.Sp
-The following optimizations are implemented:
+The following optimization flags are implemented in the core engine:
.nf
+ abcrem Array bound checks removal
all Turn on all optimizations
- peephole Peephole postpass
+ aot Usage of Ahead Of Time compiled code
branch Branch optimizations
- inline Inline method calls
cfold Constant folding
+ cmov Conditional moves [arch-dependency]
+ deadce Dead code elimination
consprop Constant propagation
copyprop Copy propagation
- deadce Dead code elimination
- linears Linear scan global reg allocation
- cmov Conditional moves [arch-dependency]
- shared Emit per-domain code
- sched Instruction scheduling
- intrins Intrinsic method implementations
- tailc Tail recursion and tail calls
- loop Loop related optimizations
fcmov Fast x86 FP compares [arch-dependency]
+ float32 Perform 32-bit float arithmetic using 32-bit operations
+ gshared Enable generic code sharing.
+ inline Inline method calls
+ intrins Intrinsic method implementations
+ linears Linear scan global reg allocation
leaf Leaf procedures optimizations
- aot Usage of Ahead Of Time compiled code
+ loop Loop related optimizations
+ peephole Peephole postpass
precomp Precompile all methods before executing Main
- abcrem Array bound checks removal
- ssapre SSA based Partial Redundancy Elimination
+ sched Instruction scheduling
+ shared Emit per-domain code
sse2 SSE2 instructions on x86 [arch-dependency]
- gshared Enable generic code sharing.
+ tailc Tail recursion and tail calls
.fi
.Sp
For example, to enable all the optimization but dead code
given option if used in combination with Ahead of Time compilation
(--aot flag) would produce pre-compiled code that will depend on the
current CPU and might not be safely moved to another computer.
+.RS
+.ne 8
+.PP
+The following optimizations are supported
+.TP
+.I float32
+Requests that the runtime performn 32-bit floating point operations
+using only 32-bits. By default the Mono runtime tries to use the
+highest precision available for floating point operations, but while
+this might render better results, the code might run slower. This
+options also affects the code generated by the LLVM backend.
+.TP
+.I inline
+Controls whether the runtime should attempt to inline (the default),
+or not inline methods invocations
+.ne
+.RE
.TP
\fB--runtime=VERSION\fR
Mono supports different runtime versions. The version used depends on the program
"cas" parameter.
.PP
The following modes are supported:
-.TP
-.I cas
-This allows mono to support declarative security attributes,
-e.g. execution of Code Access Security (CAS) or non-CAS demands.
.TP
.I core-clr
Enables the core-clr security system, typically used for
.TP
\fB(no-)lazy-sweep\fR
Enables or disables lazy sweep for the Mark&Sweep collector. If
-enabled, the sweep phase of the garbage collection is done piecemeal
-whenever the need arises, typically during nursery collections. Lazy
-sweeping is enabled by default.
+enabled, the sweeping of individual major heap blocks is done
+piecemeal whenever the need arises, typically during nursery
+collections. Lazy sweeping is enabled by default.
+.TP
+\fB(no-)concurrent-sweep\fR
+Enables or disables concurrent sweep for the Mark&Sweep collector. If
+enabled, the iteration of all major blocks to determine which ones can
+be freed and which ones have to be kept and swept, is done
+concurrently with the running program. Concurrent sweeping is enabled
+by default.
.TP
\fBstack-mark=\fImark-mode\fR
Specifies how application threads should be scanned. Options are
.Sp
The default is "win32".
.TP
-\fBMONO_THREAPOOL\fR
-This environment variable can be used to choose the implementation of
-the ThreadPool used at runtime. By default this uses the long term
-Mono threadpool implementation. But a new "microsoft" value switches
-the threadpool implementation to Microsoft's CoreCLR/ReferenceSource implementation.
-.TP
\fBMONO_TLS_SESSION_CACHE_TIMEOUT\fR
The time, in seconds, that the SSL/TLS session cache will keep it's entry to
avoid a new negotiation between the client and a server. Negotiation are very