2016-05-03 13 views
91

Nie jestem pewien, co jest przyczyną tego problemu, ale w projekcie, buduję, kompilator zajmuje godziny tylko po to, aby skompilować moduł. Całkowity rozmiar mojej bazy to 352 KB, ale żaden z modułów nie ma więcej niż 10 KB. Używam portu macierzystego, ale to bardzo trywialne; Po prostu ściągam z nim Date.now().Kompilator Wiązów działa wiecznie, komputer po prostu się nagrzewa

Czy jest coś dobrze znanego, że kompilator wiązów musiałby na zawsze skompilować? Nie mam wielu zależności, ale często używam HTML. Byłbym wdzięczny za wszelkie wskazówki, co by to spowodowało.

Edit

Okazuje się duża sprawa wyrażenia spowoduje, że optymalizator trwać długo, a od 0.16. Oto discussion on Elm-Discuss, podnoszący problem i gist of the nasty case match.

Podejrzewam, że jestem gadatliwy i trzymam marchewkę, dlaczego kompilator elfa miałby tę trasę dopasowywać do spraw? O co tu chodzi w maszynerii? Dlaczego kompilator miałby trwać dłużej niż godzinę, aby zoptymalizować 60+ dopasowań wzorców w instrukcji sprawy?

+3

Jestem ciekawy. Jaką optymalizacją jest kompilator Wiązów, który kompiluje wyrażenie sprawy w ciągu kilku godzin? Wyrażenie twojego przypadku nie wydaje się zbyt duże (przynajmniej nie wystarczająco duże dla komputera). Oznacza to, że kompilator Elm naprawdę naprawdę, naprawdę, naprawdę, naprawdę, naprawdę, naprawdę, naprawdę, naprawdę, naprawdę, bardzo, bardzo, bardzo, zły algorytm optymalizacyjny. Na przykład wyobraź sobie, ile czasu zajęłoby mu skompilowanie wyrażenia przypadku z wszystkimi pokemonami 721. –

+4

Myślę, że odpowiedź leży [tutaj] (https://github.com/elm-lang/elm-compiler/blob/master/src/Optimize/Case.hs), może powinieneś spróbować dodać znacznik 'haskell' i zobaczyć jeśli ludzie mogą nam coś zdradzić. – halfzebra

+0

@halfzebra, nie mam pojęcia, co ten kod robi, ale jestem głęboko podejrzliwy o dowolny kod, który używa 'Data.Map' z' Int' keys. 'Data.IntMap' zwykle jest o wiele szybszy. – dfeuer

Odpowiedz

Powiązane problemy