git: 89d5cbb82294 - main - libnv: optimize nvlist size calculation
Kristof Provost
kristof at sigsegv.be
Mon Jun 14 12:10:01 UTC 2021
On 11 Jun 2021, at 17:51, Mariusz Zaborski wrote:
> The branch main has been updated by oshogbo:
>
> URL:
> https://cgit.FreeBSD.org/src/commit/?id=89d5cbb82294c8624e66f920d50353057ccab14b
>
> commit 89d5cbb82294c8624e66f920d50353057ccab14b
> Author: Mariusz Zaborski <oshogbo at FreeBSD.org>
> AuthorDate: 2021-06-11 15:35:36 +0000
> Commit: Mariusz Zaborski <oshogbo at FreeBSD.org>
> CommitDate: 2021-06-11 15:51:29 +0000
>
> libnv: optimize nvlist size calculation
>
> If we had a multiple nvlist, during nvlist_pack, we calculated the
> size
> of every nvlist separately. For example, if we had a nvlist with
> three
> nodes each containing another (A contains B, and B contains C), we
> first
> calculated the size of nvlist A (which contains B, C), then we
> calculate
> the size of B (which contains C, notice that we already did the
> calculation of B, when we calculate A), and finally C. This means
> that
> this calculation was O(N!). This was done because each time we
> pack
> nvlist, we have to put its size in the header
> (the separate header for A, B, and C).
>
> To not break the ABI and to reduce the complexity of nvlist_size,
> instead of calculating the nvlist size when requested,
> we track the size of each nvlist.
>
> Reported by: pjd, kp
> Tested by: kp
Thanks for this!
Do you object to this being MFCd in a few days?
Thanks,
Kristof
More information about the dev-commits-src-main
mailing list