Sizin sezgi olabilir zamanla geliştirmek. Belki biraz tartışmalı, bunu atardım ama uzun yıllar boyunca VTune ve CodeAnalyst ve şimdi CodeXL kullanıyorum, sezgilerimde sıcak noktaların nerede olacağı konusunda olduğundan daha doğru olduğumu söyleyebilirim. bazı kodları çıkardığımda artık tam anlamıyla dikkatsizliği yakalamadığım nokta. Bu, işleri kör olarak optimize etmeye çalıştığım anlamına gelmez.
Profil oluşturma aslında profilleyicilere olan bağımlılığımı artırdı, azaltmadı. Sadece, profilleme sonuçlarının bir dereceye kadar ne olacağını tahmin edebileceğimi daha kolay tahmin edebileceğimi, sıcak noktaları başarıyla ortadan kaldırdığımı ve karanlıkta ve bıçaklarda kör bıçaklar olmadan kullanıcı-uç işleminin tamamlanması için gereken süreyi iyileştirebileceğimi söylüyorum (bir şey) Sadece bir sıcak noktanın ne olduğunu anlamaya başlayana kadar bir profilleyici kullanırken bile yapabilir, aynı zamanda neden önbellek özlüyorsa, tam olarak neden sıcak noktalar olduklarını bile yapabilirsiniz).
Ancak, bu sezgiyi geliştirmeye başladığım profilleri kullanmaya başlayana kadar değildi. Sebeplerden biri, kodunuza aşina olmanız durumunda, önsezileriniz en büyük ve en belirgin sıcak noktalara göre doğru olabilir, ancak aradaki tüm incelikleri değil. Doğal olarak, tamamlanması bir saat süren bir kullanıcı sonu işleminiz varsa ve yüz bin öğeyi kapsayan bir girdiyi işleyen tek bir aralıklı kuadratik karmaşıklık algoritması varsa, muhtemelen tüm kar tasarrufunun kuadratik karmaşıklık olduğu fikri üzerine kumar oynayarak zenginleşebilirsiniz. burada hatalı algoritma. Ancak bu size ayrıntılı bir fikir vermez veya zamana tam olarak neyin katkıda bulunmadığını tam olarak bildirir .
Profil oluşturmaya başladığınızda ve zamanın daha büyük bir katkısı olabileceğini düşündüğünüz her şeyin fazla zaman katkısı olmadığını görmek için sahip olunacak çok fazla değer var; Ağrısız açık eksiklik kaynakları değil, şüphelendiğiniz şeyler biraz verimsiz olabilir, ancak profil oluşturduktan sonra, herhangi bir zamanda zar zor katkı sağladıklarını fark etmek. Ve bu, potansiyel olarak en sezgisel içgörüyü edindiğiniz yerde, kendinizi ne kadar zaman harcadığının açıkça belli olmadığı tüm ince alanlarda yanlış göründüğünüzü bulmaktır.
Belirgin algoritmik karmaşıklığın ötesindeki insan sezgisi çoğu zaman yanlış başlayacaktır çünkü makine için verimli olan ve insan zihni için verimli olan çok farklıdır. Kayıtlardan CPU önbelleğine ve DRAM'den diske giden bellek hiyerarşileri hakkında düşünmek ilk başta sezgisel olarak gelmedi. Yedekli aritmetiğin, bazı işlem çalışmalarını atlamak için bir arama tablasının daha fazla dallanma veya hafıza erişiminden daha hızlı olabileceğini düşünmek sezgisel bir şekilde gelmedi. Karar verme, hafıza yükleme ve depolama maliyetleri gibi şeyleri indirirken ne kadar iş yapılması gerektiğini düşünmeye meyilliyiz. Donanım için verimli olan, başlangıçta tüm insani varsayımlarınızı kıracak şekillerde oldukça sezgiseldir.
Sezginin iyileştirilmesinin yardımcı olabileceği, profil oluşturma yoluyla arayüz tasarımıdır . Arayüz tasarımları, yeniden görüşmelerde değişiklik yapmak için çok maliyetlidir, maliyetler bu arayüze bağlı olarak yer sayısıyla orantılı olarak artar. Sezginizi iyileştirmeye başladığınızda, pahalı tasarım değişiklikleri olmadan gelecek optimizasyon için solunum odasını bırakacak şekilde ilk kez ara yüzleri tasarlamaya başlayabilirsiniz. Yine de, bu sezgi genel olarak geliştirdiğiniz bir şeydir ve süresiz olarak, bu profili her zaman elinizde tutarak geliştirmeye devam edin.