[Javalist] StringBuilder találós kérdés

Peter Verhas peter.verhas at gmail.com
2014. Jún. 4., Sze, 13:26:00 CEST


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


A javac nem optimalizál. Majd a JIT.




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.




Péter

On Wed, Jun 4, 2014 at 10:12 AM, Laszlo Hornyak <laszlo.hornyak at gmail.com>
wrote:

> Hali!
> Nagyon elméleti kérdés lesz... Vegyük például ezt a példa kódot
> public static String makeLongString(int a, int b) {
>   return "foo: "+a+" bar:"+b;
> }
> Ez ugyanarra fordul le, mintha a kicsit bőbeszédűbb StringBuilder-es kódot
> írtam volna le:
> public static String makeLongString(int a, int b) {
>   return new StringBuilder().append("foo: ").append(a).append("
> bar:").append(b);
> }
> 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.
> 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:
> public static String makeLongString(int a, int b) {
>   return new StringBuilder(34).append("foo: ").append(a).append("
> bar:").append(b);
> }
> A kérdés az, hogy bárki tud-e róla miért nem ezt csinálja a javac?
> Köszi!
> -- 
> EOF
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: <http://lists.javaforum.hu/pipermail/javalist/attachments/20140604/e1851f54/attachment.html>


További információk a(z) Javalist levelezőlistáról