NukeBoards

Pomoc - [Fusion] [ROZWIĄZANY] Za wolna generacja

GHPL - 04-02-2017, 19:02
: Temat postu: [Fusion] [ROZWIĄZANY] Za wolna generacja
Da się jakoś przyboostować zużycie procesora dla aplikacji napisanej w CF 2.5? Bo zrobiłem pewien generator i zanim wygeneruje jakiś sensowny kształt to minie godzina xD. Pętla generacyjna wykonuje się jakieś 15 razy i jest kilka FPS. Ja chcę szybciej!
Herrios - 04-02-2017, 19:45
:
Możesz ustawić wyższy priorytet procesu za pomocą wtyczki, powiedziałbym ci jaką ale tak szukam wśród moich wtyczek i wydaje mi się że jej nie mam.
W każdym razie jest to możliwe.
Neoqueto - 04-02-2017, 19:49
:
Nie da rady za bardzo, możesz zrobić wielowątkowość używając wielu instancji programu i wtyczki Instance Communicator, ale... ale to jest naprawdę voodoo, nie wiadomo nawet czy twój problem jest P- czy NP-trudny, a weź napisz taki kod w zdarzeniach. Najłatwiej będzie samemu starać się rozpracować jak polepszyć wydajność własnego algorytmu u podstaw.
GHPL - 04-02-2017, 20:18
:
Jest to algorytm generujący to: https://en.wikipedia.org/wiki/Abelian_sandpile_model

Kod:

msg - 04-02-2017, 20:35
:
Zrezygnuj z ini, przyśpieszysz projekt potencjalnie 10 razy ;) .
W ogóle napisz to w C++, będzie jeszcze szybsze.
GHPL - 04-02-2017, 21:08
:
msg napisał/a:
Zrezygnuj z ini, przyśpieszysz projekt potencjalnie 10 razy .

Czym zastąpić?

msg napisał/a:
W ogóle napisz to w C++, będzie jeszcze szybsze.

Jeszcze nie umiem.
jarlfenrir - 04-02-2017, 21:09
:
Zdecydowanie zrezygnuj z INI. Ono Ci spowolni nawet jak będziesz coś wczytywał raz na klatkę animacji.
INI chyba po prostu wszystko na bieżąco zapisuje i wczytuje bezpośrednio z dysku.
GHPL - 04-02-2017, 21:12
:
Herrios napisał/a:
Możesz ustawić wyższy priorytet procesu za pomocą wtyczki, powiedziałbym ci jaką ale tak szukam wśród moich wtyczek i wydaje mi się że jej nie mam.

Ustawiałem ręcznie, nie pomaga
msg - 04-02-2017, 22:13
:
GHPL napisał/a:

msg napisał/a:
Zrezygnuj z ini, przyśpieszysz projekt potencjalnie 10 razy .

Czym zastąpić?

No przecież, że Arrayem. Nawet twoje wytworne nazwy pól w INI to sugerują. Albo... no nie wiem... nazwa 'grid' i fakt, że obsługujesz tablicę dwuwymiarową :/ .
GHPL - 04-02-2017, 22:28
:
msg napisał/a:
No przecież, że Arrayem. Nawet twoje wytworne nazwy pól w INI to sugerują. Albo... no nie wiem... nazwa 'grid' i fakt, że obsługujesz tablicę dwuwymiarową .
Wydaje mi się, że jak dam że array ma rozmiar 1001 i wpiszę coś do 501 to się zlaguje, ale sprawdzę to.

[ Dodano: 04-02-2017, 22:48 ]
DZIAŁA. GENERUJE SIĘ HIPER SZYBKO. DZIĘKI.
jarlfenrir - 05-02-2017, 11:09
:
GHPL napisał/a:
Wydaje mi się, że jak dam że array ma rozmiar 1001 i wpiszę coś do 501 to się zlaguje, ale sprawdzę to.

Nie rozumiem dlaczego miałoby się "zlagować" akurat przy podanych przez Ciebie parametrach...
Tablica 1000x1000 zajmie Ci jakieś 4MB ramu... zakładam, że masz więcej ;) wręcz zaryzykowałbym stwierdzenie, że przy tablicy wielkości 10k na 10k nadal byś nie zauważył widocznych zacięć.

"Zlagowanie", jak to nazwałeś, mogłoby wystąpić tylko wtedy, jak rozmiar twojego arraya przekroczyłby ilość aktualnie wolnego ramu i system musiałby wtedy fragmenty tablicy zapisywać na dysku (tzw. pamięć wirtualna), co... w najgorszym razie da Ci wydajność na poziomie INI. W absolutnie najgorszym przypadku! W każdym innym tablica wygrywa z INI ;)
GHPL - 17-03-2018, 22:20
:
msg napisał/a:
W ogóle napisz to w C++, będzie jeszcze szybsze.
No trochę czasu minęło i już potrafię. Dzięki. Po tym jak nauczyłem się C++ widzę jak bardzo CF 2.5 to bieda XD.

EDIT 29.12.2019: Only JavaScript <3 .