2016-05-16 82 views
9

GHC profil oluşturma araçlarını kullanarak bazı Haskell kodunu profillemeye çalışıyorum. Bununla birlikte, en çok ilgilendiğim maliyet merkezi, şu anda gerçekten umurumda değil bir dizi başlatma kodu tarafından yönetiliyor.Yalnızca tek bir işlev (veya maliyet merkezi) GHC ile

Benim kod şöyle kabaca görünür:

main = do 
    x <- lotsOfInitialization 
    print $ {-# SCC "myCostCenter" #-} interestingPart x 

Benim asıl kodunda, lotsOfInitialization kısım zamanın ~% 98 alıyor ve bu yüzden içeride interestingPart neler olup bittiğini herhangi boyu ile görmek zor.

Sadece bir yerde sadece notların eklenmesi (ve -fprof-auto'u kullanmamanız) yeterli olacağını düşündüm, ancak aldığım rapor tüm fonksiyon çağrılarını gösterir.

Ayrıca x numaralı telefondan bir sıkılık eki kullanmayı denedim, fakat hiçbir şey değişmedi.

GHC'ye başlatma kodunu yok saymasını veya yalnızca istediğim parçalara odaklanmasını söylemenin bir yolu var mı?

cevap

2

ghc manual belgesine göre, belirli maliyet merkezlerinde öbek profillerini ör. -hc⟨name⟩ veya -hy⟨type⟩ kullanımı.

Zaman profillemesi için benzer bir şey yapan bir çözüm bulamadım.

DÜZENLEME:

Ben GÜNCEL rahatça tahsisi ve zaman profilleme hem de gerekenleri yapmak için bir yol bulmak için yönetmek. .prof dosyaları için profiteur görüntüleyicisini kullanırsanız, iyi biçimlendirilmiş bir ağaç haritası olarak belirli bir maliyet merkezinin performans profiline bakabilirsiniz.

İlgili konular