<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div>Hi Tim,<br><br></div><div><br>On Apr 27, 2016, at 12:37 PM, Tim Felgentreff &lt;<a href="mailto:timfelgentreff@gmail.com">timfelgentreff@gmail.com</a>&gt; wrote:<br><br></div><blockquote type="cite"><div><div dir="ltr"><div>Hi,</div><div><br></div><div>We have a proposal for a tool that&nbsp;we think might be useful to have in trunk.</div><div><br></div><div>We spent some time pulling together benchmarks from various sources (papers, the mailinglist, projects on squeaksource, ...) and combining them with an extended version of Stefan Marr's implementation of a benchmarking framework SMark. The tool and framework are modeled after SUnit, and include different execution suites and code to figure out confidence variations over multiple runs and such. Also, it draws graphs over multiple runs so you can look at things like warmup and GC behavior, and see how much time is spent doing incremental GCs and full GCs vs plain execution. As a part of this I fixed the EPS export so these graphs can be exported in a scalable format.</div><div><br></div><div>Here is a picture of the tool: <a href="https://dl.dropboxusercontent.com/u/26242153/screenshot.jpg">https://dl.dropboxusercontent.com/u/26242153/screenshot.jpg</a> <b></b><i></i><u></u><sub></sub><sup></sup><strike></strike><br></div><div><div dir="ltr"><div tabindex="0" id=":17q"><div></div></div><div tabindex="0" id=":17r"><div><div style="display: none;"><div></div><div></div></div></div></div></div></div><div><br></div><div>As I said, it's modeled after TestRunner and SUnit, benchmarks subclass from the "Benchmark" class, any method starting with&nbsp;"bench" is a benchmark, and you can have setUp and tearDown methods as usual. By default the benchmarks are run under an Autosize runner that re-executes each benchmark until the combined runtime reaches 600ms (to smooth out any noise). Beyond that, you can specify a number of iterations that the runner will re-do that to see multiple averaged runs. The graph shows the execution times split between running code (gray) incremental GCs (yellow) and full GCs (red). There are popups and you can scroll to zoom in and out. There is also a history of benchmark runs stored on the class side of benchmark classes for later reference.</div></div></div></blockquote><div><br></div>IMO 600ms is about 500 times too short ;-). Is this parameterised?<div><br><blockquote type="cite"><div><div dir="ltr"><div><br></div><div>The code currently lives here: <a href="http://www.hpi.uni-potsdam.de/hirschfeld/squeaksource/BenchmarkRunner" target="_blank">http://www.hpi.uni-potsdam.de/hirschfeld/squeaksource/BenchmarkRunner</a></div><div><br></div><div>Considering we are every so often discussing benchmark results here, I think it might be useful to share an execution&nbsp;framework for those.</div></div></div></blockquote><div><br></div>That would be fabulous. &nbsp;Hence</div><div>- can it be controlled from the command line?</div><div>- is it portable to Pharo?</div><div><br><blockquote type="cite"><div><div dir="ltr"><div><br></div><div>cheers,</div><div>Tim</div></div>
</div></blockquote><blockquote type="cite"><div><span></span><br></div></blockquote></div></body></html>