Programlama dillerinin çalışma zamanlarının bellek tüketimine ilişkin, anlamlılık ve üretim hata oranları ile ilişkili karşılaştırmalı bir çalışma var mı? [kapalı]


10

Bir dil veya başka bir dil kullanılarak oluşturulan uygulamaların çalışma zamanı performansı söz konusu olduğunda birçok karşılaştırmalı çalışma vardır ve çevrimiçi olarak mevcuttur. Bazıları şirketler tarafından yönetiliyor, bazıları akademik, bazıları sadece kişisel deney raporları.

Ayrıca, bir programlama dilinin ve onun takımlarının yan etkileri üzerine karşılaştırmalı çalışmaların iyi bir payını alıyoruz, örneğin:

  • inşa süreleri,
  • üretim sonrası hata tespiti olasılığı,
  • etkileyici güç,
  • vb...

Ancak, son zamanlarda programlarımın bellek tüketiminden her şeyden çok daha fazla yanıldım. Bu, Moore Yasası'nın ham performans için tarafımızdayken, diğer darboğazların daha önemli olduğunu fark etmemizden kaynaklanabilir. Bu ve donanımımı sık sık güncelleme eğiliminde değilim ve günümüzde büyük uygulamalar için kullanılabilir olması zor olan bazı "eski" (2005-2006 3.6GHz Pentium 4'ü 4GB RAM ile okuyorum) var. her bir meyve suyunu sıkmak için büyük bir sıkıntıdan geçmemi gerektiren (OS, UI, hizmetlerin ve cinlerin ayarlanması, bir görev veya başka bir uygulama için kullanılacak uygulamaların seçimi ...). Dürüst olmak gerekirse, bazen en ateşli programların kullandığı hafızayı görünce ağlarım topya da procexpağlarım.

Bunu yukarıda listelenen yöne doğru iterek ve aslında kendimi ve kullandığım programları sınırlamaya çalışarak ele alabilirim (sanırım cli programları için sevgim var, sanırım) belki de yanlış yapıyoruz.

Modern İhtiyaçlar için Modern Araçlar

Tabii ki, üst düzey diller tartışmalı olarak daha iyidir ve ölü ağırlıklarını haklı çıkarırlar. Bazı tasarım seçimleri, birçok araç zincirinde iyi (veya sözde iyi niyetli) nedenlerle yapıldı. Paylaşılan kütüphaneler, bellek modelleri, ön işlemciler, tip sistemleri, vb ... Ama bazıları modern donanımımızla diğerlerinden daha uygun olabilir ve bu konuda birkaç ciddi çalışma okumak isterdim.

Benim sorum şu, Benchmarks Game ve diğerlerinin dillerin temel çalışma zamanı bellek tüketiminin karşılaştırılmasına odaklanan bir kolye var mı?

Ve daha da ötesi, bunu diğer parametrelerle çapraz referans eden bazı çalışmalar var mı ( bu makalenin , örneğin, Ölçütler Oyunu'na dayanan diğer kriterler için yaptığı gibi )?


3
Kıyaslamalar oyunu neden yetersiz? Muhtemelen var olan en iyi kaynaktır ve zaten bellek tüketimini ayrıntılı olarak kapsamaktadır.
Robert Harvey

@RobertHarvey: Bellek bilgileri sağlar, ancak "temel" çalışma zamanı için değildir. Ayrıca, Benchmarks Oyunundan bilgi ayıklamak oldukça gizemli buluyorum ( aradığım tek şey olmasa da, verileriyle inanılmaz bir iş yapan bu makale için daha fazla kredi ).
haylem

1
Yürütme ortamınız ve istediğiniz bellek tüketimi gibi bazı özelliklerle, hangi sorunu çözmeye çalıştığınızla ilgili bazı bilgiler verdiyseniz, sorunuzu cevaplamaya çalışan kişilere yardımcı olabilir. Gömülü bir ortam için (kullanılan bellek miktarının önemli olduğu yerlerde) son teknoloji ürünü bir masaüstü makineye (yazılım sisteminin aşırı geniş).
Robert Harvey

2
How much memory consumption makes you weep?Etkin olmayan Chrome sekmesi uzantıları için 30 MB, ATI CCC için 100 MB, etkin olmayan bir googletalk eklentisi için 11 MB veya etkin olmayan bir yazıcı sürücüsü için 23 MB. Bunlar ve daha fazlası. Krom örneği, daha karmaşık bir örnek olduğu için parkın biraz dışında, ancak diğerleri beni biraz şaşırtıyor.
haylem

Yanıtlar:


7

Bazı kısmi bilgiler buldum, bu yüzden bulgularımı kendi cevabımda derlemeye başlayacağım. Lütfen bunun kendi yanıtlarınıza katkıda bulunmanıza (veya bu cevabı düzenlemenize) engel olmasına izin vermeyin.

Mevcut Edebiyat:

  • 7 Programlama Dilinin Ampirik Karşılaştırması - Prechelt (2000) [ PDF ]

    Biraz tarihli, ancak ilgilendiğim bazı materyalleri kapsıyor ve çalışma zamanı bellek kullanımı ve ifadesi hakkında bir görünüm veriyor. Sonuçlar şimdi çok farklı olabilir, ancak ilginç bir başlangıçtır.

  • Programlama Dillerinin Hızı, Boyutu ve Bağımlılığı - Marceau (2009) [ blog ]

  • Kod, Zaman Şekilleri Kullanılmış Kullanılmış gelen Deneyler Oyunu [ u32 , u32q , u64 , u64q ]

    Çalışma zamanı bellek tüketimini kapsamamasına rağmen, Marceau'nun çalışması, içerik ve kalite açısından bu kriter için bulmak isteyeceğim referans veya ampirik çalışma türüdür. Sadece farklı metrikler için neyin peşinde olduğuma iyi bir örnek. İkinci makale, Testler Oyunu sitesinde bulunan ve Marceau'nun çalışmasından kısa bir süre sonra (ve hangi referanslar) yayınlanan, daha yeni ekranlar ve daha fazla dille, yine de çalışma zamanı belleği ayrıntıları olmadan yayınlanan bir takiptir. Dil-to-dili karşılaştırması, bu sayfaları hatları, Her bir grafik yapmak olsa üst düzey bellek bilgiler sağlamakta.


Marceau'nun çalışması hikaye anlatma alıştırmasıdır ve bazı hikayeler anlamsızdır - "İşlevsel özelliklerin tanıtımı performansı öldürüyor mu?" bu "işlevsel dil" programlarından bazılarının işlevsel özellikleri kullanamayacağı gerçeğini göz ardı eder. Veriler, kıyaslamalar oyununun önceki bir enkarnasyonundan alınmıştır; ve başlangıçta anlamadan kullanıldığından, yayınlandıktan sonra birkaç düzeltme döngüsü vardı (yorumları kontrol edin).
igouy

"Temel çalışma zamanı bellek tüketimi" için "merhaba dünya" programları basit bir karşılaştırma ihtiyacınız kadar iyi olabilir.
igouy

@igouy: evet. Şüphesiz, ama kendimi denemek ve belgelemek / korumak zorunda kalmamayı umuyordum :) Aslında, merhaba bir dünyadan bile daha az iyi olurdu, hatta bazılarında bağlantı kurmanız bile gerekmeyecekti (veya yük) yazdırma rutinleri. (derleyici optimizasyonlarını ve diğer şeyler de devre dışı bırakılabilir)
haylem

@igouy: Marceau'nun çalışmasıyla ilgili, biliyorum, sayfayı, yorumları, güncellenmiş Benchmark Oyunu sayfalarını okudum ve onunla iletişim kurdum. Makale bence hala iyi bir referans. Kusurlu olması, değerini almaz ve hala bulmak istediğim (veya kendimi yeniden yarattığım) yönde.
haylem

"ama kendimi denemek ve belgelemek / korumak zorunda değildi umuyordum" - InternetArchive ölçümlerine bakın . Ne yazık ki sizin için Hello World için bellek ölçümlerinin tamamen yanıltıcı olduğuna ve 2005'ten sonra bunları göstermeyi bıraktığına karar verdim.
igouy

1

Bu, söz konusu soruya cevap vermiyor, ancak belki de perspektifi biraz değiştiriyor. Ben birçok aşağı oy tabi olacağı kesin bu cevap-yorum tonunu ayarlamak için sohbet transkript aklımda.

Verimlilik konusunda endişe duyan insanlar, donanım sağlayıcıları, araç sağlayıcıları ve programcılar vardır. Şimdilik onlar ve hepimiz için büyüyen bir endişe olacak. Bu endişeler mobil cihazlarda, özellikle de en büyük ekranlara ve en güçlü radyolara sahip yüksek güçlü, akılda kalıcı canavarlarla dolu.

Bir adım daha geri adım atmak için, kendimizi bugün içinde bulunduğumuz durumda, nispeten büyük çerçevelerle ve donanım geliştirmelerinin ötesinde, genel verimlilik için biraz göz ardı ederek eski bulmamızın bir kısmı eski. Eski sistemlerle uyumluluk bizi uyumluluk konusunda uyumluluk ile birleştirir. Üst düzey çalışma sürelerinin arızası değildir, çünkü aynı çalışma zamanı farklı bir işletim ortamında kullanıldığında oldukça verimli ve performanslıdır (örneğin Xbox, Windows Mobile 7/8 / Yüzey, Java Mikro Çerçeve) , vb).

Bir masaüstünün eski yazılımı ile sahip olduğu uyumluluk düzeyini, bir mobil cihazın sahip olduğu uyumluluk derecesi ile karşılaştırın.

Mobil cihazlarla, cihaz üreticileri uyumluluk sağlamak için biraz çaba harcarlar, ancak uyumluluğu temel bir temel haline getirmediler. Seçim uyumluluk sağlamaya devam etmek ve mobil sistemin tasarımını ileriye taşımak arasında olduğunda, mobil sistem ileriye doğru hareket eder.

Masaüstü bilgisayarlar için bunun tersi doğrudur. Önemli bir kırılma değişikliği pazarlamacılara veya erken benimseyenlere yanlış bir şekilde saldırırsa, gerekli özellikleri ve gerekli yeniden tasarımı arka odaya birçok kez iter. Bir noktada, Windows kullanıcıları olarak Windows XP ile tamamen ve önemli ölçüde yeni bir dosya sistemi bulacağımızın, sonra Vista'da, daha sonra Yedi için aynı ve son olarak yine Sekiz'de olduğu konusunda söylentileri hatırlıyorum, ancak hayır, o zamandan beri artmış bir şekilde iyileşti Windows2000'de ilk gördük mü? Yeni dosya sistemi uzun süre oturdu, hurdaya çıkarıldı ve söylentiler bundan sonra hikayeye karar verdi, söyleyemem. Muhtemelen bilinen en büyük durum bu, ama tek büyük durum olmadığından eminim.

En son tabletler ve mobil işletim sistemlerinde bile, bir zamanlar pazarı şekillendiren Microsoft, artık sadece tüketicilerle değil, masaüstü departmanından bir gölgede ölümle eşleşiyor. Tabletin, masaüstü muadili ile önemli ölçüde birlikte çalışabilir olması gerekiyordu. Hayır, mimari farklılıklar nedeniyle onunla mükemmel bir şekilde oynayamadı, aynı zamanda masaüstü temelinin arkaik doğası nedeniyle önemli fedakarlıklar yaptı.

Şüphesiz, Windows bu durum için her türlü eleştiri için kolay hedeftir, ancak diğer platformlar "günahsız" olmaktan uzaktır. Linux ekosisteminde sistematik iyileşme için büyük bir şaşkınlığa neden olduğundan emin olduğum bir sürü emanet var.

Ekonomi bu denklemde büyük rol oynar; bilgisayar ve uygulamalarımızı birinde nasıl finanse ettiğimiz ve diğerinde nasıl finanse edildikleri şaşırtıcı derecede farklı kalıplar izler. Wintel'in eskiden eskimişliği güçlü bir şekilde etkilediği yerlerde, Apple ve Google bunu neredeyse sıkı bir programa dönüştürdü. Bu, beklediğimden daha fazla, bu yüzden otururken ayrılacağım ve okuyucuların oradan almasına izin vereceğim.

Büyük sağlayıcılar eskime ve fiyatlandırma modellerini değiştirirse ve değiştirdiklerinde, daha büyük ölçekli değişikliklerle daha eşit bir oranda ilerlemeye başlayabilirler. En üst düzey diller tarafından yönlendirilen bu üst düzey çerçeveler bir şekilde küçülecektir, çünkü verimsiz ara uyumluluk ve düşük seviyeli katmanlar, elimine edilmezse büyük ölçüde azaltılmalıdır.


Gerçekten cevap vermez, daha çok sorunun formuna ekleyerek serbest biçimli düşünceler gibi :) İçgörü için teşekkürler ve +1. (Ayrıca, suçluların bir parçası olarak Microsoft sistemlerini hiçbir zaman ayırmayı amaçlamadığımı açıklığa kavuşturmak istiyorum. Sistemin bellek modeli ve yürütülebilir biçim izin veriyorsa, aynı sorun olan herhangi bir işletim sistemi).
haylem

Kesinlikle Microsoft'a dürtmek niyetim değil, ama çoğu insanın bu konuda görmesi en kolay durum. Diğer büyük isim, geleneksel sağlayıcılar, belki de biraz farklı bir açıdan bile olsa, aynı teknede (örneğin endüstriyel sınıf veritabanları ve ağ ekipmanı; altta yatan ürün inovasyonu ve değerinde önemli bir iyileşmeyi engelleyen kaç uzlaşma gerçekleştiriyorlar) . Her birimizin desteklediği ürünlere eve daha yakın olsa bile, o meşhur haçları bir dereceye kadar taşıyoruz.
JustinC
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.