显式使用GC\u malloc\u的负面影响

显式使用GC\u malloc\u的负面影响,c,garbage-collection,boehm-gc,C,Garbage Collection,Boehm Gc,我有一个实质性的C项目,已经使用Boehm GC一段时间了;它是从头开始构建的,从第一天起就使用Boehm GC,其类型分配行为是众所周知的 目前,它使用GC\u MALLOC()和GC\u MALLOC\u ATOMIC(),并且具有可接受(可容忍)的性能。但是,由于它的所有类型都是众所周知的,而且该项目通常与C生态系统的其他部分隔离(它不链接libc之外的任何内容),因此我认为将项目切换为主要使用GC\u malloc\u explicit\u typed(),这似乎不是不合理的。项目的许多

我有一个实质性的C项目,已经使用Boehm GC一段时间了;它是从头开始构建的,从第一天起就使用Boehm GC,其类型分配行为是众所周知的

目前,它使用
GC\u MALLOC()
GC\u MALLOC\u ATOMIC()
,并且具有可接受(可容忍)的性能。但是,由于它的所有类型都是众所周知的,而且该项目通常与C生态系统的其他部分隔离(它不链接libc之外的任何内容),因此我认为将项目切换为主要使用
GC\u malloc\u explicit\u typed()
,这似乎不是不合理的。项目的许多类型混合并匹配原始值和指针,因此从理论上讲,这应该在收集期间提供性能提升,因为它允许收集器对通过它分配的所有类型保持精确而不是保守。(这可能不会带来太多性能提升,但我仍然希望尽可能善待垃圾收集器。)

这就是说,
gc\u-typed.h
在顶部有关于显式使用
gc\u-malloc\u的各种警告消息()

这是:

/* Returns a conservative approximation in the          */
/* (unlikely) case of insufficient memory to build      */
/* the descriptor.  Calls to GC_make_descriptor         */
/* may consume some amount of a finite resource.  This  */
/* is intended to be called once per type, not once     */
/* per allocation.                                      */
我真的不相信这些对我来说都是问题,我的代码对性能至关重要,而收集器确实在我的一些评测中引起了热议。我不认为我需要
GC\u调试
——至少,我从来没有感觉到需要调试堆。对于需要分配的每种类型,我都可以调用
GC\u make\u descriptor()
,并且在程序启动时调用该函数的次数是可预测的常量,我也没有问题

似乎我的代码是使用显式类型化()的完美候选,但这些警告消息的数量和范围仍然让我停顿,它们几乎暗示着显式类型化的函数将在某个时候被删除,以支持“更好”的接口。所以我的问题很简单:

是否有人使用
GC\u malloc\u显式键入()
发现使用它有任何未说明或不明显的缺点?

/* Returns a conservative approximation in the          */
/* (unlikely) case of insufficient memory to build      */
/* the descriptor.  Calls to GC_make_descriptor         */
/* may consume some amount of a finite resource.  This  */
/* is intended to be called once per type, not once     */
/* per allocation.                                      */