folder Tahribat.com Forumları
linefolder Programlama Genel
linefolder C#/Java Paket Yönetimi. Hangisi Daha Verimli?



C#/Java Paket Yönetimi. Hangisi Daha Verimli?

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SkynetX
    SkynetX's avatar
    Kayıt Tarihi: 06/Şubat/2015
    Erkek

    Aslında soracağım soru biraz sınıflarla ilgili. Package/Namespace olayı aynı mantıkla çalışıyor diye biliyorum. O yüzden onu sormuyorum.

     

    Java 'da kullanacağımız her bir sınıfı içeri alıyoruz. 

    import java.util.ArrayList;
    import java.util.LinkedList;
    import java.util.Vector;

     

    Tek tek sınıf isimleri yazılmayıp, util 'den sonra '*' koysakta Java tarafında önerilmiyor bu. Gereksiz yükleme yaptığı için.

     

    C# ise

    using System.Collections;

    yazıp bırakırız. Her sınıfı tek tek içeri almayız. 

     

    Şimdi bu durumda C# tüm sınıfları içeri aldığından performans kaybı olmuyor mu? C# nasıl performans kaybetmeden yönetiyor bunu?

    Veya Java neden C# şeklinde güncellemiyor kendini. Her sınıfı tek tek almak amelelik değil mi?

     

    Bu durumun hikmeti nedir?

     Mod not. Kodların düzgün görüntülenmesi için etiketler değiştirildi.

     

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    nickalti
    Lightsaber
    Lightsaber's avatar
    Kayıt Tarihi: 29/Ağustos/2012
    Erkek

    Hocam şurada güzel açıklamışlar: http://stackoverflow.com/questions/187453/import-package-vs-import-package-specifictype

    Kısaca bir performans kaybı olmamakla beraber bağımlılıkların daha net ve temiz görünmesi için tek tek import edilmesi tercih ediliyor.

    Aynı isimdeki classların farklı packagelerde olmasını örnek vermiş birisi ki durumu açıklayan güzel bir örnek bence.

    Lightsaber tarafından 26/Ağu/16 23:10 tarihinde düzenlenmiştir

    İnsan; insan olsaydı,insan olmazdı..
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    nick üstü yazısı.
    uguraba
    uguraba's avatar
    Kayıt Tarihi: 02/Eylül/2005
    Erkek

    Sınıfları ekleme şeklin direk olarak verimlilik ile doğrudan bağlantılı değil.

    Sonuç olarak tüm dillerde yazılan kodlar binary ve sonrasında assembly, sonunda 1 ve 0 lara dönüşüyor.

    Java'da kullanılan sistemin önerilmesinin nedeni şu, eklediğin her sınıfa ait binary oluşturulan projeye eklenir.

    Dolayısıyla eğer tüm sınıfı eklersen kullanmadığın binary kısımda projene eklenmiş olacaktır. Ufak çaplı projelerde (ödev, staj vs gibi) tümünü eklemek çok problem yaratmayacaktır.

    Ancak profesyonel bir yazılım geliştiriyorken, sadece kullanacağın sınıfları eklemek gerekmektedir. Aksi takdirde oluşan çalıştırılabilir uygulamanın boyutu gereksiz yere büyüyecektir.


    Vir sapit qui pauca loquitur.
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Hannibal_King
    Hannibal_King's avatar
    Kayıt Tarihi: 22/Ağustos/2010
    Erkek

    Java bilmiyorum.Söyleyeceklerim c# için geçerlidir.

    Hocam öncelikle sen c# ile uygulama geliştirirken using System.Collections; dediğin zaman sınıfı içeri alma gibi bir durum olmuyor.

    Farklı firmalar yada kişiler aynı projede çalışırken sınıf isimleri çakışmasın diye c# dilinde isim alanları (namespaces) diye bir kavram var. Ve ayrıca isim arama diye bir konuda var,  buda kendi içinde nitelikli isim arama ve niteliksiz isim arama olarak 2 ye ayrılır.

    Sen bir sınıf türünden bildirim yaptığın zaman yani

    Sample x;   dediğin zaman derleyici burda x değişkenini aramaz ancak Sample sınıfını arayıp bulmak zorundadır.Bildirilen isimler aranmaz, kullanılan isimler aranır. Sen burda kodun tepesine using direktifi ile isim alanını yazdığın zaman derleyici acaba bu Sample sınıfı yukardaki isim alanlarından birinde mi diye bakar.Bulursa sorun yoktur.

    İsim alanları mantıksal kavramlardır, soyutlardır.Fiziksel olan seyler .dll uzantılı dinamik kütüphane dosyalarımızdır. .Net yazdığı tüm kodlar için en tepede System isim alanını kullanmıştır.Sen kendi projene bi isim vereceğin için .net te olan bir sınıf adını kullansan bile derleyici .netteki sınıfı  System.Sınıfadı  olarak degerlendırır. Senın projende ise bu Projeadin.Sınıfadın dır.(Arakodda sınıf adının önüne namespace adı ekleniyor sanırım. )

    Performans ile using direktiflerinin bir alakası yok yani hocam bunlar sadece programın derleme aşamasına ilişkin kavramlar.İstersen kullanmayacağın 100 tane using yaz kodun tepesine.

    Farklı isim alanlarında bulunan sınıflar fiziksel olarak aynı .dll içinde bulunabilir.Pek çok .net sınıfı System.Core isimli dll de bulunur ama bunların çoğunun ait olduğu namespaceler farklıdır.

    Özetle isim alanlarının performansa etkisi olmaz, isim arama da kullanılır ve mantıksal kavramlardır.Soyuttur.Konu uzun ama özet geçmeye çalıştım.

     

    Hannibal_King tarafından 27/Ağu/16 14:50 tarihinde düzenlenmiştir
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SkynetX
    SkynetX's avatar
    Kayıt Tarihi: 06/Şubat/2015
    Erkek

     

    Hepinize ayrı ayrı teşekkür ediyorum beyler. Çok sağolun. Yanış biliyormuşum.

    Ben performansı etkiliyor diye biliyordum. Ama etkilemiyormuş.  En büyük nedeni okunabilirlikmiş. Sonra da programın boyutu...

     

    Tekrar sağolun.

Toplam Hit: 1073 Toplam Mesaj: 5
csharp java dili