<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">I am familiar with it, just not all of the benchmarks by name.<div class=""><br class=""></div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Feb 17, 2017, at 3:04 PM, David P Grove &lt;<a href="mailto:groved@us.ibm.com" class="">groved@us.ibm.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div class=""><p class="">Sorry, I shouldn't have assumed that everyone know what the Computer Language Benchmark Game was.<br class=""><br class="">There's a set of 10 toy benchmarks written in 30 different languages that are available here: <a href="http://benchmarksgame.alioth.debian.org/" class="">http://benchmarksgame.alioth.debian.org/</a>   The webpage also lets you see the results of regular performance runs and see how the various programs stack up against each other.<br class=""><br class="">As usual with small benchmarks, there are lots of ways in which the programs aren't realistic.  <br class=""><br class="">After dispatch became available on Linux with Swift 3, I had a side project of going through the Swift implementations and adding concurrency to a few Swift programs that didn't have it already.<br class=""><br class="">regex-dna is the main outlier for Swift (which is why I had profiled it).  There's enough ARC overhead that using dispatch actually made it slower...<br class="">        The sequential version for of regex-dna for Swift is: <a href="http://benchmarksgame.alioth.debian.org/u64q/program.php?test=regexdna&amp;lang=swift&amp;id=2" class="">http://benchmarksgame.alioth.debian.org/u64q/program.php?test=regexdna&amp;lang=swift&amp;id=2</a><br class="">        My slower concurrent version is: <a href="http://benchmarksgame.alioth.debian.org/u64q/program.php?test=regexdna&amp;lang=swift&amp;id=3" class="">http://benchmarksgame.alioth.debian.org/u64q/program.php?test=regexdna&amp;lang=swift&amp;id=3</a><br class=""><br class="">I suspect that the main fix for improving the performance of this program is actually doing something in CoreFoundation, but I got sidetracked and didn't finish looking into it.<br class=""><br class="">--dave<br class=""><br class=""><span id="cid:1__=0ABB0A59DFEFF22D8f9e8a93df938690918c0AB@">&lt;graycol.gif&gt;</span><font color="#424282" class="">Michael Gottesman ---02/17/2017 05:32:03 PM---&gt; On Feb 17, 2017, at 11:30 AM, David P Grove via swift-dev &lt;<a href="mailto:swift-dev@swift.org" class="">swift-dev@swift.org</a>&gt; wrote: &gt;</font><br class=""><br class=""><font size="2" color="#5F5F5F" class="">From:        </font><font size="2" class="">Michael Gottesman &lt;<a href="mailto:mgottesman@apple.com" class="">mgottesman@apple.com</a>&gt;</font><br class=""><font size="2" color="#5F5F5F" class="">To:        </font><font size="2" class="">David P Grove/Watson/IBM@IBMUS</font><br class=""><font size="2" color="#5F5F5F" class="">Cc:        </font><font size="2" class="">Jiho Choi &lt;<a href="mailto:jray319@gmail.com" class="">jray319@gmail.com</a>&gt;, swift-dev &lt;<a href="mailto:swift-dev@swift.org" class="">swift-dev@swift.org</a>&gt;</font><br class=""><font size="2" color="#5F5F5F" class="">Date:        </font><font size="2" class="">02/17/2017 05:32 PM</font><br class=""><font size="2" color="#5F5F5F" class="">Subject:        </font><font size="2" class="">Re: [swift-dev] Profiling ARC</font><br class=""><font size="2" color="#5F5F5F" class="">Sent by:        </font><font size="2" class=""><a href="mailto:mgottesman@apple.com" class="">mgottesman@apple.com</a></font><br class=""></p><hr width="100%" size="2" align="left" noshade="" style="color:#8091A5; " class=""><br class=""><br class=""><br class="">
<ul class=""><ul class=""><font size="4" class="">On Feb 17, 2017, at 11:30 AM, David P Grove via swift-dev &lt;</font><a href="mailto:swift-dev@swift.org" class=""><u class=""><font size="4" color="#0000FF" class="">swift-dev@swift.org</font></u></a><font size="4" class="">&gt; wrote:</font><br class=""><p class=""><a href="mailto:swift-dev-bounces@swift.org" class=""><tt class=""><u class=""><font size="4" color="#0000FF" class="">swift-dev-bounces@swift.org</font></u></tt></a><tt class=""><font size="4" class="">&nbsp;wrote on 02/16/2017 09:48:28 PM:<br class="">&gt; <br class="">&gt; I was curious about the overhead of ARC and started profiling some <br class="">&gt; benchmarks found in the Computer Language Benchmark Game (http://<br class="">&gt; </font></tt><a href="http://benchmarksgame.alioth.debian.org/u64q/measurements.php?lang=swift" class=""><tt class=""><u class=""><font size="4" color="#0000FF" class="">benchmarksgame.alioth.debian.org/u64q/measurements.php?lang=swift</font></u></tt></a><tt class=""><font size="4" class="">). <br class="">&gt; So far, it seems that ARC sequence optimization is surprisingly good<br class="">&gt; and most benchmarks don't have to perform ARC operations as often as<br class="">&gt; I expected. &nbsp;I have some questions regarding this finding.<br class="">&gt; <br class="">&gt; I compiled all benchmarks with "-O -wmo" flags and counted the <br class="">&gt; number of calls to ARC runtime (e.g., swift_rt_swift_retain) using Pin.<br class="">&gt; <br class="">&gt; 1. Reference counting is considered to have high overhead due to <br class="">&gt; frequent counting operations which also have to be atomic. &nbsp;At least<br class="">&gt; for the benchmarks I tested, it is not the case and there is almost <br class="">&gt; no overhead. &nbsp;Is it expected behavior? &nbsp;Or is it because the <br class="">&gt; benchmarks are too simple (they are all single-file programs)? &nbsp;How <br class="">&gt; do you estimate the overhead of ARC would be?<br class="">&gt; </font></tt><font size="4" class=""><br class=""></font><tt class=""><font size="4" class=""><br class="">hmm, &nbsp;I wonder if your method of profiling is really finding all the ARC operations. &nbsp;The Swift version of regex-dna is about 25x slower than the Java version (on Linux). &nbsp;I looked at some prof profiles about a month ago and at the time roughly 80% of all execution samples were attributed to swift_retain/swift_release operations coming from CoreFoundation's regex implementation. &nbsp;</font></tt></p></ul></ul><font size="4" class="">Question. Where is this regex-dna benchmark, is it in the swift benchmark suite?</font><ul class=""><ul class=""><tt class=""><font size="4" class=""><br class="">--dave</font></tt><font size="4" class=""><br class=""></font><i class=""><font size="4" class=""><br class="">(See attached file: regex-dna.svg)</font></i><p class=""><font size="4" class="">&lt;regex-dna.svg&gt;_______________________________________________<br class="">swift-dev mailing list</font><u class=""><font size="4" color="#0000FF" class=""><br class=""></font></u><a href="mailto:swift-dev@swift.org" class=""><u class=""><font size="4" color="#0000FF" class="">swift-dev@swift.org</font></u></a><font size="4" class=""><br class=""></font><font size="4" class=""><a href="https://lists.swift.org/mailman/listinfo/swift-dev" class="">https://lists.swift.org/mailman/listinfo/swift-dev</a></font></p></ul></ul><br class=""><br class=""><br class="">
</div>
</div></blockquote></div><br class=""></div></body></html>