Java tür dönüşümlerinde metotlar neye göre daha performanslı oluyor?

Katılım
3 Haziran 2019
Mesajlar
1.812
Makaleler
3
Çözümler
6
Java tür dönüşümlerinde methodlar neye göre daha performanslı oluyor?
Not: Söylenene göre kod içerisinde yanında açıklama satırı içerisinde yıldız bulunanlar daha performanslıymış.

[CODE lang="java" highlight="3, 8"]String version = "1.0";

System.out.println(Float.parseFloat(version)); // *
System.out.println(Float.valueOf(version));

short age = 16;

System.out.println(String.valueOf(age)); // *
System.out.println(Short.toString(age));
System.out.println(age + "");[/CODE]
 
Son düzenleme:
Şöyle yapalım. Ben komut isteminde java --version yazdığımda gelenler bunlar.

Kod:
java 11.0.8 2020-07-14 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.8+10-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.8+10-LTS, mixed mode)

Intellij IDEA kullanıyorum Java programlamak için. Projeyi Java 11 ile oluşturdum.
Sendeki 3 ve 4. satırı yazdığımda önce valueOf metoduna bakayım dedim. İçeriği şöyle.

Kod:
public static Float valueOf(String s) throws NumberFormatException {
    return new Float(parseFloat(s));
}

parseFloat metodu da böyle.

Kod:
public static float parseFloat(String s) throws NumberFormatException {
    return FloatingDecimal.parseFloat(s);
}

Ben yanlış görmüyorsam yavaş dediğin diğerini çağırıyor. Bu da fazladan fonksiyon çağırma maliyeti demek. Gerek hız, gerekse bellek açısından.

IDE'lerde genelde Ctrl + sol klik şeklinde tıkladığın şeyin (metot, fonkisyon, değişken...) kökenine gidebiliyorsun. Sık kullanırım, hoş özellik.
 
Son düzenleme:
O zaman kafama da şu takılıyor: Madem amacı method çağırmak o zaman hiç gerek yok. Yani dile eklenmesinin bir manası yok. Haksız mıyım? Ama yine de elimizdeki en mantıklı cevap bu. Cevabın için de teşekkür ederim.
 
Stackoverflow'da araştırdığımda şunu gördüm.
valueOf() Wrapper class olan Float() dönderiyor, parseFloat ise primitive float dönderiyor.

Float.valueOf(200) => new Float(200)
Float.valueOf(127) => float n = 127;

valueOf(), ilgili parse methodunu kendi içerisinde çağırdığı için parse daha performanslı.

Float.valueOf(200) == new Float(Float.parseFloat(200))
 
Şu an bu kadar bilgili oldugumu düşünmüyorum. Ileride geri gelip yine okuyacağım. Teşekkür ederim.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…