2015-07-09 2 views
2

Я построю старый большой проект, Pugs, с ghc 7.10.1, используя stack build (я написал свой собственный stack.yaml). Затем я запустил stack build --library-profiling --executable-profiling и .stack-work/install/x86_64-osx/nightly-2015-06-26/7.10.1/bin/pugs -e 'my $i=0; for (1..100_000) { $i++ }; say $i' +RTS -pa и вывел следующий файл pugs.prof.Что такое `MAIN`? (профилирование ghc)


     Fri Jul 10 00:10 2015 Time and Allocation Profiling Report (Final) 

      pugs +RTS -P -RTS -e my $i=0; for (1..10_000) { $i++ }; say $i 

     total time =  0.60 secs (604 ticks @ 1000 us, 1 processor) 
     total alloc = 426,495,472 bytes (excludes profiling overheads) 

COST CENTRE MODULE %time %alloc ticks  bytes 

MAIN  MAIN  92.2 90.6 557 386532168 
CAF   Pugs.Run 2.8 5.2  17 22191000 


                        individual  inherited 
COST CENTRE     MODULE        no.  entries %time %alloc %time %alloc ticks  bytes 

MAIN      MAIN        287   0 92.2 90.6 100.0 100.0 557 386532168 
listAssocOp    Pugs.Parser.Operator    841   24 0.0 0.0  0.0 0.0  0  768 
nassocOp     Pugs.Parser.Operator    840   24 0.0 0.0  0.0 0.0  0  768 
lassocOp     Pugs.Parser.Operator    839   24 0.0 0.0  0.0 0.0  0  768 
rassocOp     Pugs.Parser.Operator    838   24 0.0 0.0  0.0 0.0  0  768 
postfixOp     Pugs.Parser.Operator    837   24 0.0 0.0  0.0 0.0  0  768 
termOp      Pugs.Parser.Operator    824   24 0.0 0.5  0.7 1.2  0 2062768 
    insert     Data.HashTable.ST.Basic    874   1 0.0 0.0  0.0 0.0  0  152 
    checkOverflow   Data.HashTable.ST.Basic    890   1 0.0 0.0  0.0 0.0  0  80 
    readDelLoad    Data.HashTable.ST.Basic    893   0 0.0 0.0  0.0 0.0  0  184 
    writeLoad    Data.HashTable.ST.Basic    892   0 0.0 0.0  0.0 0.0  0  224 
    readLoad    Data.HashTable.ST.Basic    891   0 0.0 0.0  0.0 0.0  0  184 
    _values     Data.HashTable.ST.Basic    889   1 0.0 0.0  0.0 0.0  0   0 
    _keys     Data.HashTable.ST.Basic    888   1 0.0 0.0  0.0 0.0  0   0 
.. snip .. 

MAIN стоит 92,2% времени, однако, я не знаю, что MAIN средства. Что означает цифра MAIN?

+2

Я думаю, что MAIN означает выражения, которые не имеют обозначений. Мой исходный код не имеет никаких обозначений SCC, а -library-профилирование не дает опции ghc -fprof-auto. – ammoh

ответ

1

Я был в том же месте несколько дней назад. То, что я вывел, - это то же самое, MAIN - это выражения без анотаций. Это значительно сокращается, если вы добавляете «-fprof-auto» и «-caf-all». Эти варианты также позволят вам найти много интересных вещей, происходящих в вашем коде.