15)内联弊端
有一个常见的误会是内联是gcc提供的可以让代码运行更快的一个选项。即使使用内联函数有时侯是恰当的(例如作为一种取代宏的方法linux内核完全注释linux内核完全注释,请看第十二章)linux软件下载,不过好多情况下不是这样。inline的过度使用会使内核变大,因而使整个系统运行速率变慢。由于容积大内核会占用更多的指令高速缓存,并且会造成pagecache的可用显存减低。想像一下,一次pagecache未命中都会造成一次c盘轮询,将历时5微秒。5微秒的时间内CPU能执行好多好多指令。
一个基本的原则是假如一个函数有3行以上,就不要把它弄成内联函数。这个原则的一个例外是,假如你晓得某个参数是一个编译经常量,但是由于这个常量你确定编译器在编译时能优化掉你的函数的大部份代码,那依然可以给它加上inline关键字。内联函数就是一个挺好的反例。
人们时常主张给static的并且只用了一次的函数加上inline,这么不会有任何损失,由于没有哪些好权衡的。其实从技术上说这是正确的,而且实际上这些情况下虽然不加inlinegcc也可以手动使其内联。并且其他用户可能会要求移除inline,由此而至的争辩会抵消inline自身的潜在价值中文linux操作系统,得不偿失。