Mai*_*tor 11 c optimization performance inline-functions
在关于inline函数声明中的关键字的许多争论中,有人会指出它在某些情况下实际上会使程序变慢 - 主要是由于代码爆炸,如果我是正确的.我自己从未在实践中遇到过这样的例子.什么是实际代码,使用inline可能会对性能有害?
Art*_*Art 20
整整10年和前一天我在OpenBSD中做了这个提交:
http://www.openbsd.org/cgi-bin/cvsweb/src/sys/arch/amd64/include/intr.h.diff?r1=1.3;r2=1.4
提交消息是:
deinline splraise,spllower和setsoftint.使内核更小更快.deraadt @ ok
据我所知,内核二进制缩小了超过100kB并且没有一个测试用例可以生成变得更慢并且几个宏基准测试(比如编译内核)明显更快(如果我没记错的话,5-10%,但不要引用我的话.
大约在同一时间我开始尝试在OpenBSD内核中实际测量内联函数.我找到了一些性能上升幅度最小的产品,但是大多数产品都有0次可衡量的影响,而且有些产品的速度慢得多,并且被杀死了.至少还有一个非内联产生了巨大的影响,其中一个是内部malloc宏(其中的想法是内联malloc,如果它在编译时具有已知的大小)和数据包缓冲区分配器,它将内核缩小了150kB并具有显着的性能改进.
有人可以推测,虽然我没有证据,但这是因为内核很大,我们在执行系统调用时很难留在缓存中,而且每一点都有帮助.那么在这些情况下实际帮助的只是二进制文件的缩小,而不是执行的指令数量.
| 归档时间: |
|
| 查看次数: |
259 次 |
| 最近记录: |