GHC'de yazılmış bir Haskell programına profil oluştururken, bir örneklemin bir başkasının uygulamalarını birbirinden ayırt etmek için .prof dosyasında yer alan tipeclass işlevlerinin adları karıştırılır. Hangi türün örneğini bulmak için bu adları nasıl sıralayabilirim?GHC profiler çıktısındaki türetilmiş yazım fonksiyonları
import Data.List (foldl')
sum' = foldl' (+) 0
data Fast = Fast
instance Show Fast where
show _ = show $ sum' [1 .. 10]
data Slow = Slow
instance Show Slow where
show _ = show $ sum' [1 .. 100000000]
main = putStrLn (show Fast ++ show Slow)
Ben -prof -auto-all -caf-all
ile derlemek ve +RTS -p
ile çalıştırın:
Mesela ben tipleri Fast
ve Slow
hem Show
uygulamak aşağıdaki programı, olduğunu varsayalım. oluşturulan alır .prof dosyasında, ben üst masraf olduğunu görüyoruz:
COST CENTRE MODULE %time %alloc
show_an9 Main 71.0 83.3
sum' Main 29.0 16.7
Ve ağaçta
, ben de aynı şekilde (ilgisiz çizgilerini ihmal) bakın: individual inherited
COST CENTRE MODULE no. entries %time %alloc %time %alloc
main Main 232 1 0.0 0.0 100.0 100.0
show_an9 Main 235 1 71.0 83.3 100.0 100.0
sum' Main 236 0 29.0 16.7 29.0 16.7
show_anx Main 233 1 0.0 0.0 0.0 0.0
Düşündüm yapmak nasıl 'un Slow
'un show
'un uygulanması ve Fast
' un değil mi?