<div dir="ltr"><div dir="ltr">On Tue, Feb 21, 2023 at 6:24 PM <a href="mailto:christoph.dreis@freenet.de">christoph.dreis@freenet.de</a> <<a href="mailto:christoph.dreis@freenet.de">christoph.dreis@freenet.de</a>> wrote:</div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="msg1593643003198317397">
<div style="overflow-wrap: break-word;" lang="DE">
<div class="m_1593643003198317397WordSection1"><span style="color:rgb(36,41,47)" lang="EN-US">I'm currently profiling some compilation phases of internal projects and noticed in allocation profiles that </span><code><span style="font-family:"Calibri",sans-serif;color:rgb(36,41,47)" lang="EN-US">Symtab.lookupPackage</span></code><span style="color:rgb(36,41,47)" lang="EN-US"> takes
up ~2% overall. The majority of this is spent in </span><code><span style="font-family:"Calibri",sans-serif;color:rgb(36,41,47)" lang="EN-US">.stream().anyMatch()</span></code><span style="color:rgb(36,41,47)" lang="EN-US"> usages to find out if the given module symbol
depends on the unnamed module.</span></div></div></div></blockquote><div><br></div><div>Straightforward patch, but it's disappointing that unrolling a <span style="font-family:monospace">Stream</span> into the equivalent <span style="font-family:monospace">for</span> loop makes it noticeably faster (how much?).</div><div><br></div><div>This also brings up larger philosophical questions about code style vs. performance. If using a <span style="font-family:monospace">Stream</span> somewhere makes for more clean/elegant/understandable code, but is slower, how to weigh the trade-off? Maybe this has been discussed before on this list before I joined. Maybe we should assign this bug to the hotspot group :)<br></div><div><br></div><div>On this same topic, this pattern which appears constantly in the compiler always makes me kind of quizzical:</div><div><br></div><div style="margin-left:40px"><span style="font-family:monospace">JCExpression expr = TreeInfo.skipParens(tree.expr);<br>if (expr.hasTag(APPLY)) {<br> JCMethodInvocation apply = (JCMethodInvocation)expr;</span></div><div style="margin-left:40px"><span style="font-family:monospace"> ...</span></div><div style="margin-left:40px"><span style="font-family:monospace">}</span><br></div><div><br></div></div><div>Is <span style="font-family:monospace">instanceof</span> really that much slower? Maybe it was once, long ago, and this is a legacy thing?<br></div><div><br></div><div>-Archie<br></div><div><div><br>-- <br><div dir="ltr" class="gmail_signature">Archie L. Cobbs<br></div></div></div></div>