【发布时间】:2010-02-15 21:29:39
【问题描述】:
我有一个通用的增长缓冲区,旨在累积“随机”字符串片段,然后获取结果。 Code 处理该缓冲区是用纯 C 编写的。
伪代码 API:
void write(buffer_t * buf, const unsigned char * bytes, size_t len);/* appends */
const unsigned char * buffer(buffer_t * buf);/* returns accumulated data */
我正在考虑我应该为该缓冲区选择的增长策略。
我不知道我的用户是否更喜欢内存或速度——或者用户数据的性质是什么。
我在野外看到了两种策略:以固定大小增量增长缓冲区(这是我目前实现的)或以指数方式增长数据。 (还有一种策略可以分配所需的确切内存量——但这在我的例子中并不那么有趣。)
也许我应该让用户选择策略...但这会使代码更复杂...
曾几何时,Herb Sutter wrote(引用 Andrew Koenig)认为最好的策略可能是指数增长,系数为 1.5(搜索“增长策略”)。这仍然是最好的选择吗?
有什么建议吗?你的经历说明了什么?
【问题讨论】:
-
嘿,这个问题有一些我在 StackOverflow 上收到的最酷的回答帖子。谢谢大家的答案!我已经接受了我发现最有趣的答案——但这是一个艰难的选择。其余的答案也很好。谢谢!