Thread View: pl.comp.lang.delphi
10 messages
10 total messages
Started by apl
Tue, 05 Apr 2022 07:40
Alokacja RAM
Author: apl
Date: Tue, 05 Apr 2022 07:40
Date: Tue, 05 Apr 2022 07:40
58 lines
2927 bytes
2927 bytes
Możliwości alokacji RAM są w Delphi ograniczone. W TP graniczną wartością było 64 kB, co prawdopodobnie wynikało z 16 bitowej architektury tego kompilatora. W D. 10.4 można by analogicznie oczekiwać górnej granicy=2^32 bajtów. Okazuje się jednak, że jest to ok. 2^30,8 bajtów. W TP można było tworzyć stertę aby przezwyciężyć te ograniczenia. Próbowałem zrobić to samo w D.10.4, starając się przy tym znaleźć największe osiągalne rozmiary warstw sterty. Posłużyłem się w tym celu metodą obramowania celu stosując instrukcję try...except w charakterze if then else, wychodząc od rozmiaru alokowanego bloku RAM Up > 2^32. Postępowanie realizowałem wg schematu: a:=UP; b:=0; P:=Up; OK:=True; step:=0; b1:=b; repeat inc(step); try setLength(heapLayer,0); setLengt(heapLayer,P); a1:=a; b1:=b; OK:=True; b:=P; P:=(a+b) div 2; except setLength(heapLayer,0); a:=P; P:=(a+b) div 2; OK:=false; end; until OK and ((b1=b) or (b=P) or (step=1)); Warunkiem stabilnego działania okazało się zerowanie rozmiaru warstwy zarówno przed próbą alokacji RAM o rozmiarze P w części try, jak i w części except - po nieudanej próbie. Warunek OK and ((b1=b) or (b=P)) przerywa iterację, gdy wynik powtórzył się, lub gdy trafił w centrum, zaś OK and (step=1) przerywa działanie, gdy warstwie z sukcesem alokowana jest RAM już przy P=Up (jak to będzie mieć miejsce przy małych wielkościach alokowanej RAM. Celem było określenie maksymalnej wartości kęsu RAM, jaki można zaalokować jakiejś zmiennej dynamicznej i zbadanie, czy wielkość ta będzie taka sama dla innych alokacji, w tym przypadku - czy każdej kolejnej warstwie sterty można alokować taki sam kęs RAM, jaki określono dla pierwszej warstwy bez ryzyka, że nie zawsze będzie to akceptowane. Metoda daje akceptowalne oceny, ale daje różne wartości kęsów dla kolejnych warstw sterty (rozbieżność nawet rzędu 1%). Niekiedy pętla repeat nie jest od razu przerywana mimo spełnienia warunku kończącego. Wniosek: ten sposób określenia maksymalnego kęsu RAM napotyka nieznane problemy techniczne. Mam nadzieję na interesujące kontrpropozycje. Programik (postać exe i kod w D.10.4) o nazwie maxHeap realizujący tę metodę można pobrać ze strony https://apl.home.amu.edu.pl/apl/. Miłej zabawy! apl
Re: Alokacja RAM
Author: Roman Tyczka
Date: Thu, 07 Apr 2022 20:34
Date: Thu, 07 Apr 2022 20:34
10 lines
203 bytes
203 bytes
On 05.04.2022 16:40, apl wrote: > Miłej zabawy! > apl Mówisz, że metodą obramowania celu pobierałeś kęsy ramu do wyzerowanej warstwy sterty? No, grubo, ty mnie zaimponowałeś... -- pzdr Roman
Re: Alokacja RAM
Author: apl
Date: Fri, 08 Apr 2022 12:27
Date: Fri, 08 Apr 2022 12:27
14 lines
441 bytes
441 bytes
czwartek, 7 kwietnia 2022 o 20:34:28 UTC+2 Roman Tyczka napisał(a): > On 05.04.2022 16:40, apl wrote: > > Miłej zabawy! > > apl > > Mówisz, że metodą obramowania celu pobierałeś kęsy ramu do wyzerowanej > warstwy sterty? > No, grubo, ty mnie zaimponowałeś... > > -- > pzdr > Roman EEEE.... weź Romek i przeczytaj jeszcze raz, dasz radę, dasz!
Re: Alokacja RAM
Author: Roman Tyczka
Date: Sat, 09 Apr 2022 17:44
Date: Sat, 09 Apr 2022 17:44
13 lines
356 bytes
356 bytes
On 08.04.2022 21:27, apl wrote: >> Mówisz, że metodą obramowania celu pobierałeś kęsy ramu do wyzerowanej >> warstwy sterty? >> No, grubo, ty mnie zaimponowałeś... >> -- >> pzdr >> Roman > EEEE.... weź Romek i przeczytaj jeszcze raz, dasz radę, dasz! Dam... tylko po co? Jak się zechcę oczytać bzdetów to pójdę na pudelka. -- pzdr Roman
Re: Alokacja RAM
Author: apl
Date: Sun, 10 Apr 2022 01:08
Date: Sun, 10 Apr 2022 01:08
18 lines
740 bytes
740 bytes
sobota, 9 kwietnia 2022 o 17:44:30 UTC+2 Roman Tyczka napisał(a): > On 08.04.2022 21:27, apl wrote: > >> Mówisz, że metodą obramowania celu pobierałeś kęsy ramu do wyzerowanej > >> warstwy sterty? > >> No, grubo, ty mnie zaimponowałeś... > >> -- > >> pzdr > >> Roman > > EEEE.... weź Romek i przeczytaj jeszcze raz, dasz radę, dasz! > Dam... tylko po co? Jak się zechcę oczytać bzdetów to pójdę na pudelka. > > -- > pzdr > Roman OK, mistrzu ciętej riposty. To teraz napisz, jak byś określił maksymalny rozmiar RAM, którą mógłbyś przydzielić pewnej strukturze.
Re: Alokacja RAM
Author: Roman Tyczka
Date: Mon, 11 Apr 2022 20:41
Date: Mon, 11 Apr 2022 20:41
22 lines
979 bytes
979 bytes
On 10.04.2022 10:08, apl wrote: >>>> Mówisz, że metodą obramowania celu pobierałeś kęsy ramu do wyzerowanej >>>> warstwy sterty? >>>> No, grubo, ty mnie zaimponowałeś... >>>> -- >>>> pzdr >>>> Roman >>> EEEE.... weź Romek i przeczytaj jeszcze raz, dasz radę, dasz! >> Dam... tylko po co? Jak się zechcę oczytać bzdetów to pójdę na pudelka. >> > OK, mistrzu ciętej riposty. To teraz napisz, jak byś określił maksymalny rozmiar RAM, którą mógłbyś przydzielić pewnej strukturze. Zacząłbym od zmiany tej struktury na taką, która nie jest jednolitym blokiem pamięci, bo w przeciwieństwie do Ciebie wiem, że ram podlega fragmentacji i nawet jeśli raz uda Ci się zaalokować w testowej apce 2GiB w jednym kawałku, to drugim razem maksymalny ciągły obszar to będzie 100MiB, a trzecim 10MiB. Zatem... nie szukaj rozwiązania problemu alokacji olbrzymiego fragmentu ramu tylko przemyśl tę strukturę i zrób ją dynamiczną. -- pzdr Roman
Re: Alokacja RAM
Author: apl
Date: Tue, 12 Apr 2022 03:35
Date: Tue, 12 Apr 2022 03:35
21 lines
766 bytes
766 bytes
> Zacząłbym od zmiany tej struktury na taką, która nie jest jednolitym > blokiem pamięci, bo w przeciwieństwie do Ciebie wiem, że ram podlega > fragmentacji i nawet jeśli raz uda Ci się zaalokować w testowej apce > 2GiB w jednym kawałku, to drugim razem maksymalny ciągły obszar to > będzie 100MiB, a trzecim 10MiB. Zatem... nie szukaj rozwiązania problemu > alokacji olbrzymiego fragmentu ramu tylko przemyśl tę strukturę i zrób > ją dynamiczną. > > -- > pzdr > Roman Witam! Ciekawe, co piszesz o tym pofragmentowaniu RAM. Jak udaje ci się pokonać to niewątpliwe źródło chaosu? pzdr APL
Re: Alokacja RAM
Author: miab
Date: Wed, 13 Apr 2022 16:31
Date: Wed, 13 Apr 2022 16:31
7 lines
495 bytes
495 bytes
W dniu 05-04-2022 o 15:40, apl pisze: > Możliwości alokacji RAM są w Delphi ograniczone. W TP graniczną wartością było 64 kB, co prawdopodobnie wynikało z 16 bitowej architektury tego kompilatora. W D. 10.4 można by analogicznie oczekiwać górnej granicy=2^32 bajtów. Okazuje się jednak, że jest to ok. 2^30,8 bajtów. W W Windows w aplikacjach 32-bitowych raczej 2^31(chyba ze użyjesz specjalnych sztuczek to dociągniesz w pobliże 2^32) Dlaczego nie użyjesz 64 bitów? miab
Re: Alokacja RAM
Author: Roman Tyczka
Date: Wed, 13 Apr 2022 16:36
Date: Wed, 13 Apr 2022 16:36
9 lines
349 bytes
349 bytes
On 12.04.2022 12:35, apl wrote: > Ciekawe, co piszesz o tym pofragmentowaniu RAM. Jak udaje ci się pokonać to niewątpliwe źródło chaosu? Jakiego chaosu? I co miałbym pokonywać? Żyjemy chyba w innej rzeczywistości, Ty walczysz z problemami, które sam stwarzasz, ja w tym czasie piszę kod rozwiązujący problemy realne. -- pzdr Roman
Re: Alokacja RAM
Author: apl
Date: Thu, 14 Apr 2022 00:46
Date: Thu, 14 Apr 2022 00:46
23 lines
1072 bytes
1072 bytes
środa, 13 kwietnia 2022 o 16:37:02 UTC+2 Roman Tyczka napisał(a): > On 12.04.2022 12:35, apl wrote: > > Ciekawe, co piszesz o tym pofragmentowaniu RAM. Jak udaje ci się pokonać to niewątpliwe źródło chaosu? > Jakiego chaosu? I co miałbym pokonywać? Żyjemy chyba w innej > rzeczywistości, Ty walczysz z problemami, które sam stwarzasz, ja w tym > czasie piszę kod rozwiązujący problemy realne. > > -- > pzdr > Roman Oj, nie tworzę problemów, tylko napotykam, pokonuję i sygnalizuję. Być może 64 bitowy kompilator przesunie poprzeczkę w górę, ale póki co cieszę się 32 bitowymi. Sygnalizuję ku przestrodze tym, którzy pragną szerzej udostępniać swój soft. Może lepiej od razu budować stertę z mniejszych kawałków, aby tworzyć coś bardziej uniwersalnego. Dzięki za odzew, wesołych świąt! Pozdrawiam, APL
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads