Re: Strange Bitmapset manipulation in DiscreteKnapsack()
От | Andy Fan |
---|---|
Тема | Re: Strange Bitmapset manipulation in DiscreteKnapsack() |
Дата | |
Msg-id | 875xzqxbv5.fsf@163.com обсуждение исходный текст |
Ответ на | Re: Strange Bitmapset manipulation in DiscreteKnapsack() (David Rowley <dgrowleyml@gmail.com>) |
Список | pgsql-hackers |
David Rowley <dgrowleyml@gmail.com> writes: > On Fri, 19 Jan 2024 at 01:07, Andy Fan <zhihuifan1213@163.com> wrote: >> I find the following code in DiscreteKnapsack is weird. >> >> >> for (i = 0; i <= max_weight; ++i) >> { >> values[i] = 0; >> >> ** memory allocation here, and the num_items bit is removed later ** >> >> sets[i] = bms_make_singleton(num_items); >> } >> >> >> ** num_items bit is removed here ** >> result = bms_del_member(bms_copy(sets[max_weight]), num_items); > > It does not seem weird to me. If the set is going to have multiple > words then adding a member 1 higher than the highest we'll ever add > ensures the set has enough words and we don't need to repalloc to grow > the set when we bms_add_member(). Hmm, I missed this part, thanks for the explaination. If bitset feature can get in someday, the future user case like this can use bitset directly to avoid this trick method. -- Best Regards Andy Fan
В списке pgsql-hackers по дате отправления: