[so] [SO] [Tema1] General questions

Daniel Baluta daniel.baluta at gmail.com
Wed Feb 23 11:26:53 EET 2011


2011/2/23 Daniel Baluta <daniel.baluta at gmail.com>:
> Salut,
>
> Trimite te rog mailuri în format plain text, respectând regulile de aici [1].
>
> 2011/2/23 Adrian Dobrescu <removing_rembrands at yahoo.co.uk>
>>
>> Mie mi se pare mai natural sa aloci alte bucket-uri și consider că adăugarea la sfârșitul listei nu își are rostul. Motive:
>> - Oricum hash-ul se redimensionează. Îl dublezi și creezi noi buckets sau îl înjumătățești și eliberezi memorie.
>
> Hmm, dacă folosești liste pentru buckets atunci se redimensiunează
> doar tabloul care ține capetele listelor.
>
>> - Ca să folosești aceeași zonă de memorie, să zicem că adaugi la sfârșitul unui nou bucket. Trebuie să îl realoci. Să îl mărești. Trebuie
> să reții un index unde se termina vechea lista de cuvinte din acel
> bucket, pentru că va urma să fie parcurs. Apoi, când îi vei
> redistribui, va trebui să ștergi elementele de la începutul listei,
> deci să faci deplasări, eventual să eliberezi memorie în surplus.
>
> Dacă bucket-ul e ținut ca o listă înălnțuită nu văd ce trebuie să
> realoci. Dacă e ținut ca un vector ai dreptate.
>
> Nu am văzut exact unde zice că trebuie să folosești aceeași zonă de
> memorie. Oricum problema
> e mult mai interesantă dacă faci in place resizing.
>
>> - Nu văd de ce nu e mai eficient din majoritatea aspectelor să aloci o alte liste de cuvinte, și după terminarea procesului de redistribuire, free(vechiul bucket) și modifici pointerul cu cel nou.
>
> Pentru că s-ar putea să nu mai ai memorie sa faci o nouă listă :). Eu
> sunt de acord cu soluția propusă de tine și
> nu văd unde în enunț îți interzice să faci ce zici tu.
>
> thanks,
> Daniel.
>

[1] http://elf.cs.pub.ro/so/wiki/resurse/lista-discutii#mailing-list-guidelines


More information about the so mailing list