当使用tallocAPI而不是malloc和friends时,内存开销是多少?
从talloc pool分配时的内存开销是多少?
直观地说,人们会认为,正常的talloc分配的开销相当高,因为头必须包含指向父/子、标记等的指针。但是,另一方面,来自talloc池的分配的内存开销预计很低,因为池是以单个操作(或类似堆栈的方式)释放的。
从池中分配时the documentation为这些分配指定no memory overhead。
查看talloc.c的代码,即central line
tc = talloc_alloc_pool(ptc, TC_HDR_SIZE+size, prefix_len);
(然后追溯到-say-
__talloc()
,它由例如talloc_size()
调用)大小n的分配开销似乎是:
align16(n) + TC_HDR_SIZE = align16(n) + 96 // on x86-64
对于大小为n的池和大小为m的r分配池,开销为:
align16(n) + TC_HDR_SIZE > r * ( align16(n) + TC_HDR_SIZE )
这与examples of the documentation冲突。
例如,来自talloc池的分配使用112字节的池内存。
我的意见正确吗塔洛克游泳池的例子是错的吗还是我在这里遗漏了什么?
最佳答案
我在64位系统上用32-49字节的开销实现了simplified talloc api开销取决于要使用的功能talloc池将在以后的版本中实现。
升级版
池在新的0.7版本中实现
关于c - 来自池的talloc分配的内存开销是多少?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19305694/