<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>