Jeśli wiem, że pewna wartość prawdopodobnie przetrwa pierwsze spotkanie z śmieciarzem, czy jest jakiś sposób, aby powiadomić GHC, więc może to po prostu przydzielić bezpośrednio gdzieś poza przedszkolem? Na przykład, jeśli buduję dużą strukturę z kilku mniejszych elementów, wiem, że każdy element będzie trwał co najmniej do czasu zakończenia całej struktury.Czy można pominąć przedszkole?
Odpowiedz
W the GHC garbage collector nie ma haków do podpowiedzi w generowaniu, do którego należy przypisać obiekt. Jednakże, może być w stanie wykorzystać zachowanie operacyjną w kilka sposobów:
w zależności od typu danych, może być w stanie wykorzystać the pinned object regio n ominąć pokoleniowe etapy łącznie.
wykorzystać eager promotion poprzez zapewnienie, aby długo żył przedmiotu wskazuje się przez samo długo żył coś ...
wprowadzać dane do a CAF i obejścia dynamicznego przydzielania całkowicie.
Niestety, co ja " m robi się zbyt polimorficzne, aby użyć przypinania, a przekształcanie danych w CAF nie jest zazwyczaj opcją. Jeśli edytujesz swoją odpowiedź, aby wyjaśnić nieco więcej, w jaki sposób mogę oszukać promocję, z przyjemnością przyjmuję tę odpowiedź. Uwaga: mój obecny przypadek użycia redukuje czas GC dla 'Data.Sequence.fromList', który jest nieco absurdalnie wysoki. – dfeuer
- 1. Czy można pominąć najbliższego przodka?
- 2. Czy można pominąć tłumaczenie przy użyciu joomfish?
- 3. Czy można pominąć setUp() dla określonego testu w unittest Pythona?
- 4. Czy można pominąć wiadomości o zasobach podczas ogłaszania pliku development.log?
- 5. Czy typename można pominąć w specyfikatorze typu definicji elementu końcowego?
- 6. Czy można pominąć testy junitowe w skrypcie ant build?
- 7. Przedszkole Komponenty dla dzieci - Angular 2
- 8. Można pominąć sprawdzanie poprawności na update_attributes?
- 9. Które postacie można pominąć w Scali?
- 10. Jak można pominąć test jednostkowy w Django?
- 11. Jak pominąć oddzwonienia ActiveRecord?
- 12. Jak można pominąć opcje X-Frame: nagłówek HTTP SAMEORIGIN?
- 13. Kiedy można pominąć rozszerzenie pliku w dyrektywie #include?
- 14. Nie można pominąć innych bloków globalnie w Stambule
- 15. Jak pominąć walidacje w/find_or_create_by_?
- 16. Jak można pominąć okna dialogowe komunikatów o błędach DataSnap Delphi?
- 17. Jak pominąć iterację pętli foreach?
- 18. Jak pominąć default_scope?
- 19. Czy można pominąć obszar przemieszczania i (również) zatwierdzić niepotwierdzone, nowe pliki do git?
- 20. Czy można pominąć niezaznaczone ostrzeżenia podczas przesłaniania metody parametrami typu surowego?
- 21. Czy można pominąć sprawdzanie widoczności podczas generowania dynamicznego IL za pomocą metody MethodBuilder?
- 22. Dla atrybutów HTML z jedną możliwą wartością, czy można pominąć tę wartość?
- 23. Czy można pominąć krok prekompilacji aktywów dla pojedynczego naciśnięcia git na Heroku?
- 24. jak pominąć Domyślne Argumenty C++?
- 25. Jak pominąć pierwsze dziecko?
- 26. podkreślenie, jak używać pominąć
- 27. Jak pominąć wykonanie akcji z ActionFilter?
- 28. Czy mogę pominąć pliki .pyo i .pyc w RPM?
- 29. Jeśli mam już ACCESS_FINE_LOCATION, czy mogę pominąć ACCESS_COARSE_LOCATION?
- 30. Czy możemy pominąć const dla zmiennych lokalnych w funkcjach constexpr?
Jako mały meta-komentarz: Nienawidzę tego rodzaju pytań, ponieważ zawsze myślisz: "Nie, nie ma mowy". ale natychmiastowa myśl po tym jest: "Cóż, jestem pewien, że nie wiem * wszystkiego * o kompilatorze (może tylko jedna lub dwie osoby), a ponieważ jest to open source, oczywiście jest sposób na wszystko, co można obliczyć , ale ... to nie jest odpowiedź ... ". Czy ktokolwiek ma konstruktywne sposoby na odpowiedź na tego rodzaju pytanie? –
Ta optymalizacja nazywa się "[wstępne] (http://www.memorymanagement.org/glossary/p.html#term-premature-tenuring)" - przeprowadzono pewne badania, ale nie wierzę, że to było włączone do dowolnego głównego kompilatora/środowiska wykonawczego. –
@DanielWagner, poza wszelkimi funkcjami, które mogłem przegapić, zastanawiałem się, czy może istnieć jakiś trudny sposób wykorzystania mechanizmów GHC do radzenia sobie z dużymi i/lub obcojęzycznymi obiektami. Nie mogłem od razu zobaczyć czegoś takiego, ale * naprawdę * nie znam tych systemów. – dfeuer