optymalizacja programu :)

0

Kończę pisac sobie programik - konsolę na chat Polchatu.
Wszystko jest mojej roboty, począwszy od rozpracowania istniejącego protokołu(:P), poprzec stworzenie komponentu i w końcu napisanie programu.

Program po kompilacji zajmuje ok 1 MB. Kiedy go odpalam to proces w pamięci zajmuje ok 3 MB, ale ciągle rośnie(raz nawet do 50 MB i wtedy musiałem zamknąć prog bo wszystko siadało :) ).
Dynamiczne formy zwalniam po zamknięciu, przeniosłem część procedur do DLL i są ładowane dynamicznie nie mam za dużo zmiennych globalnych, ale kod trochę linijek ma :)

Moje pytanie jest związane z tym co można jeszcze zrobić aby program nie zajmował tyle pamięci(ew. wymuszać zwalnianie nieużywnej pamięci - bo coś nie chce mi się wierzyć że zajmuje aż 50 MB).

Drugie pytanie: czy łądowanie dynamiczne procedur z biblioteki DLL widocznie opóźnia działanie programu w momencie ładowania?
Bo chciałbym przenieść więcej cząsto wykonywanych procedur do DLL.

0

Musisz mieć gdzieś jakieś wycieki pamięci. Nawet Delphi tyle nie zajmuje ;)

Ładowanie dynamiczne funkcji z DLL'a na pewno jest wolniejsze, ale różnice nie powinny być zauważalne.

0

No cóż, można chyba przyjąć, że chodziło mu o rozpracowanie już istniejącego protokołu... :)

Że aż do 50MB dochodzi, to na prawdę nieciekawie - gdzieś musi być potężny wyciek pamięci, sugeruję przepisać kod w newralgicznych miejscach - parę godzin i będzie, a wszystkie problematyczne fragmenty powinieneś wyłapać. Najlepiej też sprawdzaj debuggerem, kiedy zajmowana pamięć się zwiększa - w jakich momentach pracy.

0

Sprawdź czy aby wszystkie dynamiczne komponenty są zwalniane po użyciu (Create bez Free kilka razy na jednym obiekcie i pamięci ubywa - a jak w pętli to ohoho :) )

0

Dzięki za pomoc, coś tam popróbuję :)

PS:
{
Myślałem, że moderatorzy usuwają bezsensowne posty, nic nie wnoszące do dyskusji(dotyczy postu lofix'a) dbając tym samym o poziom wypowiedzi na forum i jego treść merytoryczną.
} //nieaktualne

A o tym protokole i komponencie napisałem po to, aby powiedzieć, że nie korzystam z żadnych gotowych komponentów z których może "wyciekać" pamięć.

0

Skoro to program pokroju chata, zapewne używa TMemo, albo TRichEdit... Z pewnością każda dodana literka do zawartości owych komponentów zwiększa pobór pamięci, nie wiem tylko czy ta pamięć się czyści przy ich czyszczeniu.

0

nie wiem na ile to zaawansowany program ale 1 mb to zdecydowanie za duzo

a robienie jakichs dll w takim (wydaje mi sie) mimo wszystko prostym programie to tez nieporozumienie bo powinno swietnie dzialac w 1 kawalku

jakbys szukal pomocnika to ja moge ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1