0
我有做基本的错误返回链接列表的下一个节点之前检查功能:如何编写包装函数以便编译器有效地优化它?
Node *next_node(Node *n) {
switch(type(n)){
case A:
case B:
.
.
case N:
return n->next;
default:
exit(1); //This is just a representation of my code handling error scenario.
}
}
有在它的上面这确实取决于上述函数的返回值某些事情变得更加的包装功能。
这些包装函数正在我的整个代码库中广泛使用。当我运行分析器时,我发现它们很耗时。 这对我来说是有意义的,因为有数以千计的来自不同代码区域的函数调用到这些函数,并且由于函数调用重载和/或指令缓存未命中,这样的调用数量肯定会花费时间。
我也知道编译器会围绕这些进行一些优化,以便在生成汇编代码时可以内联它们。由于目前的实施方式,它似乎工作不正常。
所以,我的问题是:
- 什么是写这样的包装功能的常见方式,使编译器可以对其进行优化,低运行?
- 其他公司在其代码库中如何处理这种情况?
注1:上面的代码仅用于表示,整个代码库中有很多这样的包装函数。因此,如果有人有任何想法来改善由于包装函数导致的运行时问题,应该分享这个想法。
注2:我使用gcc作为编译器和我的代码库是完全C.
你是否启用了优化启用('-O3')的gcc? – silel