<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="AsciiDoc 8.6.10">
<title>MLmon</title>
<link rel="stylesheet" href="./asciidoc.css" type="text/css">
<link rel="stylesheet" href="./pygments.css" type="text/css">


<script type="text/javascript" src="./asciidoc.js"></script>
<script type="text/javascript">
/*<![CDATA[*/
asciidoc.install();
/*]]>*/
</script>
<link rel="stylesheet" href="./mlton.css" type="text/css">
</head>
<body class="article">
<div id="banner">
<div id="banner-home">
<a href="./Home">MLton 20201002</a>
</div>
</div>
<div id="header">
<h1>MLmon</h1>
</div>
<div id="content">
<div id="preamble">
<div class="sectionbody">
<div class="paragraph"><p>An <span class="monospaced">mlmon.out</span> file records dynamic <a href="Profiling">profiling</a> counts.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_file_format">File format</h2>
<div class="sectionbody">
<div class="paragraph"><p>An <span class="monospaced">mlmon.out</span> file is a text file with a sequence of lines.</p></div>
<div class="ulist"><ul>
<li>
<p>
The string "<span class="monospaced">MLton prof</span>".
</p>
</li>
<li>
<p>
The string "<span class="monospaced">alloc</span>", "<span class="monospaced">count</span>", or "<span class="monospaced">time</span>", depending on the kind
of profiling information, corresponding to the command-line argument
supplied to <span class="monospaced">mlton -profile</span>.
</p>
</li>
<li>
<p>
The string "<span class="monospaced">current</span>" or "<span class="monospaced">stack</span>" depending on whether profiling
data was gathered for only the current function (the top of the stack)
or for all functions on the stack.  This corresponds to whether the
executable was compiled with <span class="monospaced">-profile-stack false</span> or <span class="monospaced">-profile-stack
true</span>.
</p>
</li>
<li>
<p>
The magic number of the executable.
</p>
</li>
<li>
<p>
The number of non-gc ticks, followed by a space, then the number of
GC ticks.
</p>
</li>
<li>
<p>
The number of (split) functions for which data is recorded.
</p>
</li>
<li>
<p>
A line for each (split) function with counts.  Each line contains an
integer count of the number of ticks while the function was current.
In addition, if stack data was gathered (<span class="monospaced">-profile-stack true</span>), then
the line contains two additional tick counts:
</p>
<div class="ulist"><ul>
<li>
<p>
the number of ticks while the function was on the stack.
</p>
</li>
<li>
<p>
the number of ticks while the function was on the stack and a GC
   was performed.
</p>
</li>
</ul></div>
</li>
<li>
<p>
The number of (master) functions for which data is recorded.
</p>
</li>
<li>
<p>
A line for each (master) function with counts.  The lines have the
same format and meaning as with split-function counts.
</p>
</li>
</ul></div>
</div>
</div>
</div>
<div id="footnotes"><hr></div>
<div id="footer">
<div id="footer-text">
</div>
<div id="footer-badges">
</div>
</div>
</body>
</html>
