Ulepszenie wydajności systemu receptur JSON.
0 polubień
4 pobrań
FastSuite umożliwia szybsze wykonanie dopasowywania receptur dzięki zastosowaniu współbieżności. W przypadku dowolnego typu przepisu zawierającego ponad 100 przepisów FastSuite umożliwi współbieżne dopasowywanie przepisów i użyje wielu wątków w celu dopasowania wszystkich kombinacji przepisów, zamiast polegać na jednym wątku do wykonania tej pracy. Zaobserwowano, że spowodowało to 10-12-krotne przyspieszenie w All The Mods 8, jak pokazano poniżej:
[Test wielowątkowy] — znalezienie przepisu na deski akacjowe zajęło średnio 301960,28 ns
[Test jednowątkowy] — znalezienie przepisu na deski akacjowe zajęło średnio 2774185,5 ns
[Test wielowątkowy] — znalezienie przepisu na paluszki zajęło średnio 494851,94 ns
[Test jednowątkowy] — znalezienie przepisu na paluszki zajęło średnio 4500045,0 ns
[Test wielowątkowy] — znalezienie przepisu na stół rzemieślniczy zajęło średnio 148572,14 ns
[Test jednowątkowy] — znalezienie przepisu na stół rzemieślniczy zajęło średnio 3246270,5 ns
[Test wielowątkowy] — znalezienie przepisu na czarne shulker box zajęło średnio 370346,56 ns
[Test jednowątkowy] — znalezienie przepisu na czarne shulker box zajęło średnio 4711380,0 ns
[Test wielowątkowy] — znalezienie przepisu na nieudane dopasowanie zajęło średnio 701000,56 ns
[Test jednowątkowy] — znalezienie przepisu na nieudane dopasowanie zajęło średnio 1,3034094E7 ns
Typy receptur, które wykazują problemy z jednoczesnym dopasowywaniem receptur, mogą zostać umieszczone na czarnej liście w pliku konfiguracyjnym. W porównaniu z poprzednimi wersjami FastSuite, model dopasowywania współbieżnego jest bardziej kompatybilny (działa z zainstalowanym Polymorphem) i zawsze działa (podczas gdy stary model nie działał, jeśli występowała znaczna zmiana receptury i nie działał przy pierwszym dopasowaniu ). Jest także nieco mniej kruchy, ponieważ nie musi zapisywać żadnych danych podczas dopasowywania, co mogłoby powodować problemy, gdyby mody dopasowywały przepisy poza wątkiem.
Podobnie jak w projektach FastWorkbencha I Szybki Piec, FastSuite to mod poprawiający wydajność receptur. Jednak w przeciwieństwie do tych dwóch modów, ulepsza wszystkie mody korzystające z systemu przepisów JSON, a nie tylko określony podzbiór przepisów. Dokonuje tego poprzez zamianę listy przepisów z zestawu na listę LinkedList. Kolejność tej listy można następnie zmienić po uzyskaniu dostępu do przepisu, dzięki czemu dostęp do niej w przyszłości będzie znacznie szybszy. Przepisy znajdujące się wystarczająco blisko początku listy (które mieszczą się w „rozmiarze pamięci podręcznej”) nie są przenoszone, aby uniknąć zmiany. Rozmiar pamięci podręcznej można konfigurować, a każdy typ przepisu ma własną przestrzeń podręczną.
Przy pierwszym dostępie do przepisu FastSuite będzie miał identyczną wydajność jak wanilia. Jednak po pierwszym dostępie czas potrzebny na uzyskanie dostępu do przepisu będzie się zmniejszał. Spadek ten może być znaczny, w zależności od tego, jak daleko na liście znajdował się pierwotnie przepis. Wpływ jest również bardziej dramatyczny w zależności od liczby przepisów załadowanych do gry, ponieważ wtedy istnieje większy zakres przenoszenia przepisów. Poniżej możemy zobaczyć poprawę wydajności w zakresie czasów dostępu do kilku przepisów wraz z ich indeksem w oryginalnej kolejności na liście przepisów. Następująca seria 6 tabel jest zorganizowana w następujący sposób:
Kolumna znajdująca się najbardziej po lewej stronie zawiera przepis, oryginalny indeks na liście przepisów oraz bieżącą wersję próbną. Następne dwie kolumny porównują czasy wyszukiwania przepisu FS/Vanilla w mikrosekundach. Domyślny rozmiar pamięci podręcznej wynosi 100 i jest tutaj stosowany. Oznacza to, że wpisy o indeksie nie większym niż 100 nie są przenoszone.
Zobacz to, aby uzyskać więcej informacji.
Nastąpiła radykalna zmiana w przepisach, które zwykle znajdują się na końcu listy przepisów, co widać w przypadku desek akacjowych. Przepisy, które znajdują się już na początku listy, takie jak Bryłki Żelaza lub Złota, wykazują minimalne ulepszenia lub nie wykazują ich wcale. W związku z tym widzimy, że nie ma nic złego w zastosowaniu korzyści, jakie zapewnia FastSuite, ponieważ zapewnia on wyjątkowe korzyści w zakresie wydajności, gdy jest użyteczny (poprawa> 95% w przypadku desek akacjowych) i nie ma żadnego wpływu, gdy w przeciwnym razie nie przyniósłby żadnych korzyści ( jak widać w przypadku próby meczu zakończonego porażką). Faktycznie widzimy niewielkie szkody w bryłkach żelaza i złota, ponieważ mieściły się one w rozmiarze pamięci podręcznej i zostały faktycznie przesunięte w wyniku operacji buforowania desek akacjowych, patyków i stołów rzemieślniczych. Jednakże utrata wydajności jest z tego powodu niewielka lub żadna, szczególnie w porównaniu z korzyściami wynikającymi z buforowania późniejszych receptur.
Ten mod powinien całkowicie współpracować ze wszystkimi innymi modami. Został zaprojektowany tak, aby nie był inwazyjny i nie powinien kolidować z niczym innym niż innym modem zastępującym menedżera przepisów. Został dostosowany tak, aby współpracował z modami modyfikującymi receptury, takimi jak KubeJS i CraftTweaker, i nie powoduje żadnych problemów z JEI. Udało mi się załadować All The Mods 3 i nie zauważyłem żadnych błędów, a także został przetestowany w Skyfactory 1.
Ten mod nie zastępuje FastWorkbench ani FastFurnace, chociaż jego zalety zostaną zmniejszone, jeśli zostanie zainstalowany, ponieważ część pracy zostanie przeniesiona do FastSuite. Aby uzyskać maksymalną wydajność w odniesieniu do przepisów, nadal radzę zainstalować oba, ale jeśli musiałbyś wybrać tylko jeden, powinien to być FastSuite, a nie którykolwiek z pozostałych.
Udało się!