En az RAM kullanan ve ne performanslı çalışan yazılım dili nedir?

Peki swiftle c dili ile ilgili bir karşılaştırma yapabilir misiniz?
 
Şu an benchmark testlerinde Rust C'den daha iyi sonuç veriyor. C ve C++ da performans konusunda çok iyi tabii ki. Yalnız burada unutulmaması gereken bir nokta işletim sistemleri geliştirilrken C++ yerine C kullanılmasıdır. Bunun sebebi C dilinin C++'a göre kayda değer miktarda daha hızlıdır.
Linux geliştirilirken kullanılan diller:

Eki Görüntüle 1733103

Şeklindedir.

Rust'in C'yi geçtiği o Benchmark'ı atabilir misiniz? Kaynağınızı çok merak ettim.

Belki çok spesifik bir konuda geçmiş olabilir ancak genel anlamda Rust'ın C'yi geçebileceği pek mantıklı gelmiyor.
 
Şu an benchmark testlerinde Rust C'den daha iyi sonuç veriyor. C ve C++ da performans konusunda çok iyi tabii ki. Yalnız burada unutulmaması gereken bir nokta işletim sistemleri geliştirilrken C++ yerine C kullanılmasıdır. Bunun sebebi C dilinin C++'a göre kayda değer miktarda daha hızlıdır.
Linux geliştirilirken kullanılan diller:

Eki Görüntüle 1733103

Şeklindedir.
- Makefile, C/C++ toplu derleme için bir script.
- Rust, Swift, Vala, eCere, Free Basic, önce C diline veya Object dosyasına çeviriliyor ve ardından bir C derleyicisi ile derleniyor. Bunların çevirildiği ana dilden daha hızlı işlem yapabilmeleri imkansız. En fazla eşit hızda olabilirler ki, değiller. Ek olarak farklı derleyici veya yorumlayıcılara da gereksinim duyuyorlar. Mesela Free Basic GCC ve Lua derleyicilerini ve kütüphanelerini (Windows sürümnde ) içerir. Linux sürümünde harici olarak kurulmuş olmaları gerekiyor. Vala ise GCC ve Python3 ve GTK+ için gereksinim duyar.

Yeni nesil diller genelde varolan geleneksel diller üzerine kuruludur. Hız konusu ikinci sırada yer alır. Kolay uygulanabilirlik esas alınır.
 
Son düzenleme:
- Makefile, C/C++ toplu derleme için bir script.
- Rust, Swift, Vala, eCere, Free Basic, önce C diline veya Object dosyasına çeviriliyor ve ardından bir C derleyicisi ile derleniyor. Bunların çevirildiği ana dilden daha hızlı işlem yapabilmeleri imkansız. En fazla eşit hızda olabilirler ki, değiller. Ek olarak farklı derleyici veya yorumlayıcılara da gereksinim duyuyorlar. Mesela Free Basic GCC ve Lua derleyicilerini ve kütüphanelerini (Windows sürümnde ) içerir. Linux sürümünde harici olarak kurulmuş olmaları gerekiyor. Vala ise GCC ve Python3 ve GTK+ için gereksinim duyar.

Yeni nesil diller genelde var olan geleneksel diller üzerine kuruludur. Hız konusu ikinci sırada yer alır. Kolay uygulanabilirlik esas alınır.

1681075517690.png


Aradaki kılcal farkları saymazsak Rust'ın C'ye derleniyor olmasının getirdiği performans dezavantajının olmadığını net şekilde yukarıdaki grafiklerden görebiliyoruz. C ve Rust tam olarak eşit performans sergiliyorlar dostum yapılan testlerde.

Ben size asıl fark yaratacak şeyi söyleyim. Eğer Rust'da kod yazıyorsanız büyük olasılıkla performanslıdır ancak C'de bazı şeyleri algoritma kurarken düşünmek gerekir ki yukarıdaki grafiklere benzer sonuçlar elde edilebilsin.

Misal Rust'ta olup C'de olmayan şeyler:

1, Rust Compile-time'da uygulamanızın null veya dangling pointerlara karşı güvende olacağını garanti eder. C'de leak Memory'ye karşı ekstradan düşünmelisiniz ki yukarıdaki performansı elde edebilesiniz.

2. Rust, bir değişkenin ömrünün compile-time'da sona erdiğini bilir ve böylece belleği boşaltmak için uygun LLVM/assembly talimatlarını ekler. Bu durum, Runtime'da performansı artırır. C de bir çöp toplayıcı yoktur. Algoritmada üzerine düşünmek gerekir.

Eğer siz C++'de bunları doğru şekilde uygulayacak kadar bilgiliyseniz Rust ile neredeyse eşit performans elde edebilirsiniz ancak bunlara yeterince hakim değilseniz uygulamanızın performansı muhtemelen Rust'da daha yüksek olacaktır.

Benzer bir durum Assembly ile C arasında da vardır. Siz Assembly'de misal flagalra yeterince hakimseniz C'den kılcal miktarlarda daha iyi performans elde edebilirsiniz ancak hakim değilseniz muhtemelen C'de yazacağınız kod günün sonunda Assembly'ye compile edilse bile Assembly'den daha performanslı olacaktır.
 
Eki Görüntüle 1734325

Aradaki kılcal farkları saymazsak Rust'ın C'ye derleniyor olmasının getirdiği performans dezavantajının olmadığını net şekilde yukarıdaki grafiklerden görebiliyoruz. C ve Rust tam olarak eşit performans sergiliyorlar dostum yapılan testlerde.

Ben size asıl fark yaratacak şeyi söyleyim. Eğer Rust'da kod yazıyorsanız büyük olasılıkla performanslıdır ancak C++'de bazı şeyleri algoritma kurarken düşünmek gerekir ki yukarıdaki grafiklere benzer sonuçlar elde edilebilsin.

Misal Rust'ta olup C++'de olmayan şeyler:

1, Rust compile-time'da uygulamanızın null veya dangling pointerlara karşı güvende olacağını garanti eder. C++'de leak Memory'ye karşı ekstradan düşünmelisiniz ki yukarıdaki performansı elde edebilesiniz.

2. Rust, bir değişkenin ömrünün compile-time'da sona erdiğini bilir ve böylece belleği boşaltmak için uygun LLVM/assembly talimatlarını ekler. Bu durum, Runtime'da performansı artırır. C de bir çöp toplayıcı yoktur. Algoritmada üzerine düşünmek gerekir.

Eğer siz C++'de bunları doğru şekilde uygulayacak kadar bilgiliyseniz Rust ile neredeyse eşit performans elde edebilirsiniz ancak bunlara yeterince hakim değilseniz uygulamanızın performansı muhtemelen Rust'da daha yüksek olacaktır.

Benzer bir durum Assembly ile C arasında da vardır. Siz Assembly'de misal flagalra yeterince hakimseniz C'den kılcal miktarlarda daha iyi performans elde edebilirsiniz ancak hakim değilseniz muhtemelen C++'de yazacağınız kod günün sonunda Assembly'ye compile edilse bile Assembly'den daha performanslı olacaktır.

Dediklerinizde sonuna kadar haklısınız. Rust'ın yazılımı C'ye oranla çok daha kolay. Performans konusunda da bayağı bir şaşırmış durumdayım.

Ancak yine de gerçek bir uygulama üstünde test etmek daha doğru olabilirdi diye düşünüyorum. Bu problemler küçük problemler ve aradaki milisayinelik farklar kaçırılabilir.

Minik bir API yazıp bu API'yi bir Database'e bağlayıp gerçek bir uygulama üstünden de test yapmak gerçekçi bir sonuç verebilir diye düşünüyorum. Çünkü biliyorsunuz Disk'e IO performansı, socket açıp kapama performansı, bir paketi network üzerinden göndermek için gereken performans gibi birçok etken işin içine giriyor.
 
Reklamlarda genelde hep böyle abartılır. İstenen sonucu elde etmek için de sonuca ulaşan kod yazılır. Bunun belgesel çekimlerinde görüntü elde edebilmek için avlanan hayvanın önceden uyuşturulmuş olmasından bir farkı yok. Kendin de basit bir döngü yazıp, döngüye bir de zaman ölçeği ekleyip eşit şartlarda ölçebilirsin. Yüksek seviyeli dillerde derlenmiş dosyanın boyutu da daha fazla olur, çünkü kullanıcıya kazandırılan her kolaylık, ilaveten bir kod yığınının eklenmesine sebep olur. Güvenlik ve kolaylık her zaman bir maliyet getirir.
 
Reklamlarda genelde hep böyle abartılır. İstenen sonucu elde etmek için de sonuca ulaşan kod yazılır. Bunun belgesel çekimlerinde görüntü elde edebilmek için avlanan hayvanın önceden uyuşturulmuş olmasından bir farkı yok.

Sort algoritmaları performans ve complexity analysis konularında kullanılan en temel algoritmalardır. Bilgisayar mühendisliğindede bu konular hep sort algoritmaları ile anlatılır. Bu yüzden testin doğruluğuna güveniyorum.

Yüksek seviyeli dillerde derlenmiş dosyanın boyutu da daha fazla olur, çünkü kullanıcıya kazandırılan her kolaylık, ilaveten bir kod yığınının eklenmesine sebep olur.

Öncelikle Rust high-level bir dil değil. High-level diller genelde interpreter ile çalışır ya da byte code gibi ara katmana compile edilir. Bu dillerin boyutlarının büyük olması normaldir çünkü çoğu işlem Runtime'da gerçekleştirilir.
Rust, C gibi middle-level programlama dillerindendir ve yaptığınız analiz performans değil de dosya büyüklüğü ise burada bu boyutu belirleyecek, varsa externel lib. Yoksa built-in lib. Dir. Bunları optimize etmenin yolları olsa da günün sonunda kod boyutunu çok büyük ihtimalle bunlar belirleyecektir.

Güvenlik ve kolaylık her zaman bir maliyet getirir.
Bu genelleme tamamen yanlıştır, çünkü eğer işlemler Runtime'da değil compile time ya da daha öncesinde gerçekleştiriliyorsa ek yük compile Time'da oluşacak Runtime'da oluşmayacaktır. Bununla birlikte getirilen çözüm 1 verip 2 almamızı sağlayan bir çözümse güvenlik ve kolaylık bile performans getirebilir. Buna güzel bir örnek ben bugün Rust ve Assembly'de aynı algoritmayı yazsam Rust ile daha yüksek performans alma ihtimalim çok yüksektir. Bunun sebebi Assembly'nin yavaş olması değil benim Assembly'de performans optimizasyonu sağlayacak kavramlara hakim olmamamdır. Bu durum çoğu yazılımcı için geçerlidir.
 
Rust dili C'ye derlenmez. Yanlış bilgi.

Hayır derlenebilir dostum. GitHub - thepowersgang/mrustc: Alternative rust compiler (re-implementation) ancak burada bahsettiğimiz konu bu değil.

Rustc derleyicisi halihazırda LLVM kullanıyor ve Rust pek çok konuda C'ye bağımlı. Hatta Rust'ta doğrudan Foreign Function Interface ile C kodu çalıştırabiliyor, yazabiliyoruz. Rust'ta libc adında neredeyse C'deki standart kütüphane ile aynı bir kütüphane bile var.

Resmi olarak bu şekilde tanımlamasalarda kendilerini çoğu insana göre Rust, C'nin yüksek performanslı bir üst kümesi.
 
Hayır derlenebilir dostum. GitHub - thepowersgang/mrustc: Alternative rust compiler (re-implementation) ancak burada bahsettiğimiz konu bu değil.

Rustc derleyicisi halihazırda LLVM kullanıyor ve Rust pek çok konuda C'ye bağımlı. Hatta Rust'ta doğrudan foreign function ınterface ile C kodu çalıştırabiliyor, yazabiliyoruz. Rust'ta libc adında neredeyse C'deki standart kütüphane ile aynı bir kütüphane bile var.

Resmi olarak bu şekilde tanımlamasalarda kendilerini çoğu insana göre Rust, C'nin yüksek performanslı bir üst kümesi.

Alternatif diyor. Rust C'ye derlenmiyor. Sen gidip özellikle C'ye derleyen compiler bulmuşsun onu atıyorsun. Allah hidayet versin. Rust ile C kodu çalıştırabiliyor olmanla konunun da alakası yok. Saygılar.
 

Technopat Haberler

Yeni konular

Geri
Yukarı