<html>
  <head>
    <meta http-equiv="content-type" content="text/html;
      charset=ISO-8859-15">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Hello,<br>
    <br>
    basically I noticed some performance problems on mono (linux). I
    have a unit test suite which requires some minutes to run on .net
    but several hours on mono.<br>
    <br>
    Because this code is heavily using F# asyncs and tasks I tried to
    find existing bug reports of the problem.<br>
    I found the following entries:<br>
    <a class="moz-txt-link-freetext"
href="http://lists.ximian.com/pipermail/mono-devel-list/2005-April/011477.html">http://lists.ximian.com/pipermail/mono-devel-list/2005-April/011477.html</a><br>
    <a class="moz-txt-link-freetext"
      href="http://lists.ximian.com/pipermail/mono-bugs/2010-May/100566.html">http://lists.ximian.com/pipermail/mono-bugs/2010-May/100566.html</a><br>
    <a class="moz-txt-link-freetext"
href="http://lists.ximian.com/pipermail/mono-devel-list/2010-January/033814.html">http://lists.ximian.com/pipermail/mono-devel-list/2010-January/033814.html</a><br>
    But they all don't seem to be directly related as there are no
    sockets used, because of this I decided to use the mono profiler and
    check the results.<br>
    <br>
    I had problems with the self compiled mono profiler
    (libmono-profiler-log.so.0.0.0) I had to copy the file from the
    binary distribution (It seems like the build is broken somehow on
    mono master?).<br>
    For reference: I got the mighty: "<span style="color: rgb(0, 0, 0);
      font-family: Courier; font-size: 13px; font-style: normal;
      font-variant: normal; font-weight: normal; letter-spacing: normal;
      line-height: normal; orphans: auto; text-align: start;
      text-indent: 0px; text-transform: none; white-space: normal;
      widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;
      background-color: rgb(255, 255, 255); display: inline !important;
      float: none;">The 'log' profiler wasn't found in the main
      executable nor could it be loaded from 'mono-profiler-log'."</span><br>
    <br>
    Afer running the profiler the top results are:<br>
    Method call summary<br>
    Total(ms) Self(ms)      Calls Method name<br>
    67733962   539203     229540
    Microsoft.FSharp.Control.AsyncBuilderImpl/callA@815:Invoke
    (Microsoft.FSharp.Control.AsyncParams`1<b>)<br>
    49135479   197016     163464
    Microsoft.FSharp.Control.AsyncBuilderImpl/resultA@781:Invoke
    (Microsoft.FSharp.Control.AsyncParams`1<a>)<br>
    48703438    33181     162414
    Microsoft.FSharp.Control.AsyncBuilderImpl/args@799-1:Invoke (a)<br>
    42976340 42976339       5318 (wrapper managed-to-native)
    System.Threading.WaitHandle:WaitOne_internal
    (System.Threading.WaitHandle,intptr,int,bool)<br>
    42600383   368321     164611
    Microsoft.FSharp.Control.AsyncBuilderImpl/bindA@793:Invoke
    (Microsoft.FSharp.Control.AsyncParams`1<b>)<br>
    37193074     1632      99251 (wrapper runtime-invoke)
    <Module>:runtime_invoke_void__this___object
    (object,intptr,intptr,intptr)<br>
    29263844        8      12264 (wrapper runtime-invoke)
    object:runtime_invoke_void__this__ (object,intptr,intptr,intptr)<br>
    27579799      103       4772 System.Threading.WaitHandle:WaitOne
    (int,bool)<br>
    25615463      185         12 System.Threading.Thread:StartInternal
    ()<br>
    19749208       19      10942
    System.Threading.Tasks.TpScheduler:TaskExecuterCallback (object)<br>
    19749189       19      10942 System.Threading.Tasks.Task:Execute ()<br>
    19749169       33      10942 System.Threading.Tasks.Task:ThreadStart
    ()<br>
    19748752       47      10942 System.Threading.ExecutionContext:Run
(System.Threading.ExecutionContext,System.Threading.ContextCallback,object)<br>
    19748253       90      10942 System.Security.SecurityContext:Run
(System.Security.SecurityContext,System.Threading.ContextCallback,object)<br>
    19748012       62      10942
    System.Threading.ExecutionContext/<Run>c__AnonStorey0:<>m__0
    (object)<br>
    19746136       55      10942
    System.Threading.Tasks.Task/<ThreadStart>c__AnonStorey0:<>m__0


    (object)<br>
    19744958       34      10942 System.Threading.Tasks.Task:InnerInvoke
    ()<br>
    18306055       81          5
    System.Threading.Timer/Scheduler:SchedulerThread ()<br>
    18305830        3       1896 System.Threading.WaitHandle:WaitOne
    (int)<br>
    16264445        1        836
    System.Threading.Tasks.TaskActionInvoker/FuncInvoke`1<bool>:Invoke
    (System.Threading.Tasks.Task,object,System.Threading.Tasks.Tas\<br>
    k)<br>
    <br>
    And I don't really know what that means or where the problem is
    sitting as the F# code (the top entries) should be same in mono and
    .net. <br>
    Can anybody help in reading the results? I have also attached the
    complete output of <tt>mprof-report (EDIT: the mailing-list doesn't
      allow attachments: <a
        href="https://seafile.yaaf.de/f/51c56adc26/">https://seafile.yaaf.de/f/51c56adc26/</a>
      ).</tt> When the problem is identified I would be happy in helping
    to solve it. Are there other ways/tools to further analyse the
    problem?<br>
    <br>
    Thank you,<br>
     Matthias<br>
  </body>
</html>