Google'daki Jeff Dean'e atfedilen bu gecikme sayı grafiğinden bahsediyorum .
Anlamadığım şey, bu sayılar bir donanım setinden diğerine değişmiyor mu? Bunlar tüm farklı RAM, CPU, anakart, sabit disk vb.İçin nasıl doğru olabilir?
Google'daki Jeff Dean'e atfedilen bu gecikme sayı grafiğinden bahsediyorum .
Anlamadığım şey, bu sayılar bir donanım setinden diğerine değişmiyor mu? Bunlar tüm farklı RAM, CPU, anakart, sabit disk vb.İçin nasıl doğru olabilir?
Yanıtlar:
Bu sayılar ( Norvig'in 10 yıl içinde Kendini Programla programında da listelenmiştir ) yaklaşıktır, sadece büyüklük (sırası) olarak yararlıdır.
Aslında, günümüzün donanımı (en azından masaüstü veya dizüstü bilgisayarlar için) ucuz 300 € dizüstü bilgisayar ve üst düzey 10k € iş istasyonu arasında bile çok fazla değişmiyor. Hız en fazla kabaca 2 veya 4 faktör kadar değişir. Böyle bir iş istasyonu daha büyük bir diske, daha fazla çekirdeğe, önbelleğe ve RAM'e sahip olabilir. Ancak bunun ham tek iş parçacıklı performans üzerinde fazla bir etkisi yoktur.
Http://openbenchmarking.org/ veya bazı CPU karşılaştırıcılarındaki bazı rakamlara bakın .
Sözde Moore kanunu olduğunu ölüyor . Evdeki 3+ yıllık masaüstü bilgisayarım (bir i3770K) (bugün, Mart 2016'da) sadece % 20 daha hızlı olan bazı i6700 ile değiştirilebilir .
Sayılar doğru değildir. Öyle büyüklük dereceleri arasındaki oranları arasındaki katmanlar önemli.
Ancak, yıkıcı bir teknoloji göründüğünde (örn. Bulut bilişim, 10GB / 100GB ethernet, yeni ağ çekirdek modülü, SSD depolama ağları, sanallaştırma ve kapsayıcılık), bu katmanlar yeni katmanların görünmesi, kaybolması veya karıştırılması nedeniyle geçersiz kılınabilir.
Çok yüksek bir seviyede programlama yaparken - tüm hesaplama, ağ oluşturma, ayrıştırma, vb., Kendiniz yazılmayan kütüphaneler kullanılarak gerçekleştirilir, düşük seviyeli işlemlerin performans rakamlarını bilmek, her birini geliştirme fırsatınız olduğundan çok yardımcı olmayabilir. kütüphanenin performansı oldukça sınırlıdır veya açıkça imkansızdır.
Bunun yerine, her kütüphanenin performansla ilgili belgelerini dikkatlice okuyun. Bir kütüphane bunlarla birlikte gelmiyorsa, sorun - sorun yaratın. Veya yazılımı doğru şekilde nasıl kıyaslayacağınızı öğrenin.
Yazılım bileşenlerini tasarlayan ve üreten bir şirket tarafından işe alındığınızda, gecikme sayıları hakkında temel bir anlayışa sahip olmak önemlidir . Bunu, otomobil ve içindeki her bileşeni tasarlayan ve üreten bir şirketle karşılaştırın - meşhur "tekerleği yeniden icat etme" (lastik, lastik basıncı, basamaklar, vb.)
Çoğu yazılım şirketi bileşen düzeyinde çalışmaz - tüm fonksiyonel yazılım sistemleri bileşenleri bir araya getirerek yapılandırılabilir. Bu yazılım şirketlerinin, gecikmeler açısından bileşenlerin nasıl mühendisleştirileceğine odaklanmasına gerek yoktur; bunun yerine seçtikleri bileşenlerin kalitesini değerlendirmeleri gerekir.
Özetlemek gerekirse, (1) gecikme sayılarını bilmenize gerek yoktur; (2) Satılık veya dahili kullanım için (dünyanın en büyük yazılım şirketlerinden bazılarında olduğu gibi) yazılım bileşenleri (kütüphaneler) yapan bir şirket tarafından kiralanmak istemiyorsanız, (3) bu numaralara ihtiyacınız varsa, karşılaştırmaları bilimsel olarak doğru bir şekilde kendiniz yapmak sizin işinizdir, aksi takdirde yazılım bileşenleri üzerinde çalışmamalısınız.
Kimse bu numaraların herhangi bir donanım için doğru olduğunu iddia etmedi.
Ancak, kör tahminlerden çok, çok daha doğrudurlar. Birçok insan maalesef kodlarını temel alıyor.
Mükemmel bir şekilde doğru değiller ve gerçekten olması amaçlanmamıştır.
Onlar (özellikle küçük sayılar) sadece büyüklük sırasından biraz daha iyi. Başka bir nokta da, hangi şeylerin birbirine yakın olduğunun anlaşılmasına yardımcı olabileceği, bazen insanların gerçekte olduklarından çok daha fazla olduğunu yanlış yorumladıklarıdır. Açık bir örnek olarak, çok az insan şube yanlış tahmininin sıklıkla büyük bir şey olduğunu varsayar. Çok fazla tekrarlanırsa büyük bir anlaşma olabilir, ancak sadece daha iyi şube tahmini elde etmek için ( her yerde ve her yerde çok büyük bir miktardan feda etmeye değmez) muhtemelen net bir kayıptır).
Aynı zamanda, evet, büyüklük sıraları en yararlı kısımlar olabilir. Örneğin, ana bellekten verilere erişim bir kayıttan yaklaşık 100 kat daha uzun sürer. Evet, bir makinede yaklaşık 97 kat daha uzun, diğerinde 127 kat daha uzun olabilir. Neredeyse kesinlikle 100'e 10 veya 1000'den daha yakın olacak.
Şahsen, bunların çoğunun, örneğin Pasifik Okyanusu'ndaki adalara benzediğini düşünüyorum. Sabit sürücü hızları (örneğin) Hawaii adaları olabilir. SSD hızları Filipin adalarıdır. Bu, haritanın her birini tek bir nokta gibi gösterecek kadar küçük ölçekte gösteriyor. Yakınlaştırırsak, bu kesinlikle doğru değildir - ancak iki zincir arasındaki mesafe, her iki zincirdeki adalar arasındaki mesafelerden çok daha büyüktür.