<span id="mailbox-conversation">Bele kell nézni a generált kódba. Fordítónként változik. Az az egyetlen válasz, hogy miből mit generál. Vita nincs, az van, ami a bájtkódban van. Javap -v<div><br></div>
<div>A javac nem optimalizál. Majd a JIT.</div>
<div><br></div>
<div>Vannak post opimalizálók, amik a lefordított kódot valamennyire optimalizálják, de. Azok is inkább a nem használt osztályokat és metódusokat veszik ki feltételezve, hogy nem hívja őket senki reflectiönnel. Ha valakit érdekel, akkor a yworks oldalain talál ilyesmit. Engem nem érintett ilyesmi, ezért. Nem foglalkoztam ilyen termékekkel.</div>
<div><br></div>
<div>Péter</div></span><br><br><div class="gmail_quote"><p>On Wed, Jun 4, 2014 at 10:12 AM, Laszlo Hornyak <span dir="ltr">&lt;<a href="mailto:laszlo.hornyak@gmail.com" target="_blank">laszlo.hornyak@gmail.com</a>&gt;</span> wrote:<br></p><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div dir="ltr">
<div>
<div>
<div>Hali!<br><br></div>Nagyon elméleti kérdés lesz... Vegyük például ezt a példa kódot<br><br></div>public static String makeLongString(int a, int b) {<br></div>  return "foo: "+a+" bar:"+b;<br><div>}<br clear="all"><div><div>
<div><br></div>
<div>Ez ugyanarra fordul le, mintha a kicsit bőbeszédűbb StringBuilder-es kódot írtam volna le:<br><br>public static String makeLongString(int a, int b) {<br>  return new StringBuilder().append("foo: ").append(a).append(" bar:").append(b);<br>
}<br clear="all"><div><br></div>Ez egész jónak tűnik, de egy apróság hiányzik. Ha átpasszolná a StringBuilder-nek, hogy mekkora buffer-re lesz szüksége, akkor kód nyerhetne egy kicsit azon, hogy a StringBuilder-nek nem kell újraallokálnia a bufferét.<br></div>
<div>Például a fenti példá kódra azt mondhatná a compiler, hogy van két string, azok együtt 10 karakter, plusz az int maximum 12 karaketeren fér ki, akkor az összesen 34 karakter, így megúsznánk több újraallokációt is, ha az alábbi módon előre lefoglalná a buffert:<br><br>public static String makeLongString(int a, int b) {<br>  return new StringBuilder(34).append("foo: ").append(a).append(" bar:").append(b);<br>}<br clear="all"><div><br></div>
<div>A kérdés az, hogy bárki tud-e róla miért nem ezt csinálja a javac?</div>
<div><br></div>
<div>Köszi!<br></div>
<br></div>
<div>
<br>-- <br><br>EOF
</div>
</div></div>
</div>
</div></blockquote></div><br>