(参见知乎大佬的回答,并加以了解释)
使用k=2增长因子的问题在于,每次扩展的新尺寸必然刚好大于之前分配的总和:
什么意思?假设初始长度为c,那么看下图:
之前被分配的空间不能利用对缓存并不友好,最好把增长因子设为1<k<2,例如 Folly 采用 1.5,RapidJSON 也是跟随采用 1.5,k=1.5时,可以在几次扩容之后,重用之前的内存。
(参见知乎大佬的回答,并加以了解释)
使用k=2增长因子的问题在于,每次扩展的新尺寸必然刚好大于之前分配的总和:
什么意思?假设初始长度为c,那么看下图:
之前被分配的空间不能利用对缓存并不友好,最好把增长因子设为1<k<2,例如 Folly 采用 1.5,RapidJSON 也是跟随采用 1.5,k=1.5时,可以在几次扩容之后,重用之前的内存。