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:
Şö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.
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.
 
Java'ya çok hakim olmadığım için bir şey diyemeyeceğim ama vardır bir nedeni. Diller kolaylık olsun diye geliştiriliyor.

valueOf metodunun parametre olarak float alanı da var. İnsanlar ona alışkanlıkları ile çağırmak istemiştir belki.
 
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))
 
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.🙂
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı