<html>
  <head>
    <meta content="text/html; charset=ISO-8859-2"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Hi!<br>
    <br>
    Nézted a generált kódot? Milyen verzióval fordítottad? Én
    1.7._0_02-vel néztem most, és ugyanúgy látom a bipush 34-et meg a
    StringBuilder konstruktor hívást.<br>
    <br>
    Szerintem max. csak akkor fordít konkatenációra, ha literálokkal
    játszol.<br>
    <br>
    Ricsi<br>
    <br>
    <div class="moz-cite-prefix">On 2014.06.03. 20:06, Laszlo Hornyak
      wrote:<br>
    </div>
    <blockquote
cite="mid:CAKRHFXUtdYdmswS=QVxsPy6FdL1HZzNzM8NTsJCc4eiDf8zDwQ@mail.gmail.com"
      type="cite">
      <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>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Javalist mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Javalist@lists.javaforum.hu">Javalist@lists.javaforum.hu</a>
<a class="moz-txt-link-freetext" href="http://lists.javaforum.hu/mailman/listinfo/javalist">http://lists.javaforum.hu/mailman/listinfo/javalist</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>