2012-05-19 2 views
5

Kompilacja w Scali jest dość powolna. Czy są jakieś nadzieje na przyspieszenie?Pamięć podręczna kompilatora dla Scala?

Jedna rzecz, która przychodzi mi na myśl, to odpowiednik cala cache: pamięć podręczna, w której kompilator nie musi rekompilować niektórych części. Wiem, że wnioskowanie typu sprawia, że ​​rzeczy są bardziej skomplikowane, ale zastanawiam się, czy w ogóle jest to wykonalne. Być może buforowanie powinno odbywać się na innym poziomie (np. AST) lub musi wykonać jakiś wstępny proces.

Z przyjemnością zobaczę niektóre szacunki, ile można by potencjalnie zaoszczędzić, jeśli takie narzędzie istnieje. Jakie wyzwania są potrzebne, aby rozwiązać ten problem?

+2

Nie określono, co chcesz buforować. Wspominasz ccache, ale jego celem jest C++, który ma znacznie inny schemat kompilacji niż Scala. Myślę, że to, czego szukasz, to przyrostowa kompilacja. Sbt ma tę funkcję zaimplementowaną, ale nadal jest w dalszym ciągu błędna (może przekompilować za dużo). Jeśli pytanie było bardziej przejrzyste, jak określenie, co dokładnie powinno zostać zrealizowane, być może będę w stanie odpowiedzieć dokładniej. –

+0

Oryginalny ccache działa, że ​​buforuje nieco wstępnie przetworzone pliki .c .cpp do plików binarnych obiektów. Z perspektywy programisty nie jest to tak ważne, o ile przyspiesza kompilacje. Kilka możliwości: - same pliki (niedostępne z powodu typu wnioskowania) - AST - niektóre rodzaje wstępnie przetworzonych plików – Jakozaur

+0

sbt buforuje pliki .class, rekompilując to, co jest naprawdę potrzebne. Myślę, że właśnie tego szukasz. –

Odpowiedz

0

Podobnie jak SBT, który tylko rekompiluje to, co jest potrzebne, JRebel pomaga rozwiązać ten problem i ma wsparcie Scala.

+0

SBT rekompiluje dużo, która nie jest potrzebna i często nie rekompiluje tego, co * jest * potrzebne. – aij