-If specified, the options are separated by commas:
-.RS
-.ne 8
-.TP
-\fIoutput=FILE\fR, \fIout=FILE\fR or \fIo=FILE\fR
-Use this option to provide the output file name for the profile log.
-If this option is not specified, it will default to profiler-log.prof.
-.TP
-\fIjit\fR, \fIj\fR
-Collect information about time spent by the JIT engine compiling
-methods.
-.TP
-\fIallocations\fR, \fIalloc\fR or \fIa\fR Collect
-information about each allocation (object class and size).
-.TP
-\fIenter-leave\fR, \fIcalls\fR or \fIc\fR
-Measure the time spent inside each method call, this is done by
-logging the time when a method enters and when the method leaves.
-This can be a time consuming operation.
-.TP
-\fIstatistical\fR, \fIstat\fR or \fIs\fR
-Performs statistical profiling. This is a lightweight profiling
-mechanism as it has a much lower overhead than the \fIenter-leave\fR
-profiling as it works by sampling where the program is spending its
-time by using a timer.
-.TP
-\fIunreachable\fR, \fIfree\fR or \fIf\fR
-Performs a lighweight profile of the garbage collector. On each
-collection performed by the GC, the list of unreachable objects is
-recorded, and for each object the class and size is provided. This
-information is useful to compute the heap size broken down by class.
-.TP
-\fIheap-shot\fR, \fIheap\fR or \fIh\fR
-Performsn full heap profiling. In this case on each
-collection a full heap snapshot is recorded to disk.
-.TP
-\fIgc-commands=FILE\fR, \fIgc-c=FILE\fR or \fIgcc=FILE\fR
-Used to specify the file that controls the heap snapshot dumps.
-.TP
-\fIgc-dumps=N\fR, \fIgc-d=N\fR, \fIgcd=N\fR
-Used to specify the initial number of heap snapshots to dump (if the control file is not used).
-.TP
-\fIper-thread-buffer-size=N\fR, \fItbs=N\fR
-Use to specify the number of events that a thread buffer
-can hold. When the thread buffer is full, the log block it is
-written to disk.
-.Sp
-This defaults to tbs=10000.
-.TP
-\fIstatistical-thread-buffer-size=N\fR, \fIsbs=N\fR
-The number of statistical samples that
-are held in memory before they are dumped to disk (the system does
-double-buffering and the statistical samples are written by a helper
-thread).
-.Sp
-This defaults to sbs=10000.
-.TP
-\fIwrite-buffer-size\fR, \fIwbs\fR
-Specifies the size in bytes of the internal write buffers.
-.Sp
-This defaults to wbs=1024.
-.ne
-.RE
-.PP
-A few invocation samples follow.
-.PP
-To collect statistical data:
-.nf
-
- mono --profile=logging:s program.exe
-.fi
-.PP
-To profile method enter-exit and allocations:
-.nf
-
- mono --profile=logging:c,a program.exe
-.fi
-.PP
-To profile method enter-exit and jit time, and write the data to "mydata.mprof":
-.nf
-
- mono --profile=logging:c,j,o=mydata.mprof program.exe
-.fi
-.PP
-Then you would need to invoke the decoder on "mydata.mprof" to see the
-profiling results.
-.PP
-In its current state, this profiler can also perform heap analysis (like
-heap-shot), and the decoder is already able to read the data, however
-the user interface for this feature has not yet been written (which means
-that the data is not printed by the decoder).
-.PP
-More explanations are provided here: "http://www.mono-project.com/LoggingProfiler".
-.SH EXTERNAL PROFILERS
-There are a number of external profilers that have been developed for
-Mono, we will update this section to contain the profilers.
-.PP
-The heap Shot profiler can track all live objects, and references to
-these objects, and includes a GUI tool, this is our recommended
-profiler.
-To install you must download the profiler
-from Mono's SVN:
-.nf
- svn co svn://svn.myrealbox.com/source/trunk/heap-shot
- cd heap-shot
- ./autogen
- make
- make install
-.fi
-.PP
-See the included documentation for details on using it.
-.PP
-The Live Type profiler shows at every GC iteration all of the live
-objects of a given type. To install you must download the profiler
-from Mono's SVN:
-.nf
- svn co svn://svn.myrealbox.com/source/trunk/heap-prof
- cd heap-prof
- ./autogen
- make
- make install
-.fi
-.PP
-To use the profiler, execute:
-.nf
- mono --profile=desc-heap program.exe
-.fi
-.PP
-The output of this profiler looks like this:
-.nf
- Checkpoint at 102 for heap-resize
- System.MonoType : 708
- System.Threading.Thread : 352
- System.String : 3230
- System.String[] : 104
- Gnome.ModuleInfo : 112
- System.Object[] : 160
- System.Collections.Hashtable : 96
- System.Int32[] : 212
- System.Collections.Hashtable+Slot[] : 296
- System.Globalization.CultureInfo : 108
- System.Globalization.NumberFormatInfo : 144
-.fi
-.PP
-The first line describes the iteration number for the GC, in this case
-checkpoint 102.
-.PP
-Then on each line the type is displayed as well as the number of bytes
-that are being consumed by live instances of this object.
-.PP
-The AOT profiler is used to feed back information to the AOT compiler
-about how to order code based on the access patterns for pages. To
-use it, use:
-.nf
- mono --profile=aot program.exe
-.fi
-The output of this profile can be fed back into Mono's AOT compiler to
-order the functions on the disk to produce precompiled images that
-have methods in sequential pages.