2014-04-11 14 views
6

To może być głupie pytanie lub zbyt otwarte, ale czego szukam w rdzeniu wyjściowym GHC, aby zrozumieć, gdzie odbywa się przydzielanie pamięci? Moją motywacją jest lepsze zrozumienie sposobu optymalizacji kodu, takiego jak this, lub np. aby uniknąć wywłaszczania podczas krytycznych sekcji w kodzie współbieżnym.Identyfikacja miejsca przydzielania pamięci w rdzeniu

Odpowiedz

4

let s zazwyczaj gdzie to się dzieje, przy założeniu, że zmienna istota bounds id nie stanowi rodzaj # (czyli niech związana Int# nie powoduje alokację.) Jednakże, to naprawdę STG który określa dokładnie, gdzie to się dzieje.

+0

Ah ok, dzięki. [this] (https://ghc.haskell.org/trac/ghc/wiki/Commentary/Compiler/GeneratedCode) wygląda na to, że będzie to pomocne, jeśli chcę spróbować zrozumieć niektóre z STG. Pomysł jest taki, że jeśli mamy "pozwolić" związać 'Int # 'lub inną unboxowaną rzecz, która jest już w stosie czy coś takiego? – jberryman

Powiązane problemy