对于序列化系统,我需要分配缓冲区来写入数据。所需的大小并不是预先知道的,所以基本模式是malloc
N
字节,如果需要更多,则使用realloc
。 N
的大小将足够容纳大多数物体,使重新分配变得非常罕见。什么是适合中型内存分配的大小?
这让我觉得有可能是一个最佳的初始字节数,malloc
可以比其他人更容易满足。我猜在接近pagesize
的地方,虽然不一定完全如果malloc
需要一些家务管理的空间。
现在,我确定这是一个无用的优化,如果它真的很重要,我可以使用一个池,但我很好奇;我不能成为第一个认为给我的程序员,不管是哪一个字节块都是最容易分配的,作为开始。有没有办法确定这一点?
接受任何专门适用于现代GCC/G ++和/或Linux的答案。
优化本身并不是无用的,但也许你应该等待优化,直到有一个具体的需求呢?或者你的手上有太多时间? :-) – 2011-04-07 01:16:59
@Anders:如果我花几个小时来研究这个,那可能是在浪费时间。看到我是否好奇可以在SO上得到答案似乎对我来说时间有效:) – porgarmingduod 2011-04-07 01:23:04
@Anders K:根据我的经验,大多数有关优化问题的海报需要关于该做什么而不是不该做什么的输入。 – 2011-04-25 15:29:32