梁平集团网站建设,做网站制作赚钱吗,品牌建设 网站,h5和小程序有什么区别文章目录1. 前言2. 什么尾调用#xff08;Tail Call#xff09;#xff1f;3. 尾调用优化4. Linux内核下的尾递归优化使用5. 参考资料1. 前言
限于作者能力水平#xff0c;本文可能存在谬误#xff0c;对此给读者带来的损失#xff0c;作者不错任何承诺。
2. 什么尾调用…
文章目录1. 前言2. 什么尾调用Tail Call3. 尾调用优化4. Linux内核下的尾递归优化使用5. 参考资料1. 前言
限于作者能力水平本文可能存在谬误对此给读者带来的损失作者不错任何承诺。
2. 什么尾调用Tail Call
如果对函数B的调用是函数A执行的最后一条语句这就是尾调用Tail Call。详见 https://eklitzke.org/how-tail-call-optimization-works 或 https://www.ruanyifeng.com/blog/2015/04/tail-call.html 。
3. 尾调用优化
调用函数时会为其在堆栈上维护一个栈帧记录局部变量和返回地址等信息如果函数A对B的调用是函数A执行的最后一条语句则表明函数A栈帧信息不会再被用到这时可以将A的栈帧空间给函数B使用而不是为B函数重新开辟栈帧空间这就是尾递归优化Tail Call Optimization。详见 https://eklitzke.org/how-tail-call-optimization-works 或 https://www.ruanyifeng.com/blog/2015/04/tail-call.html 。
4. Linux内核下的尾递归优化使用
改变内核代码通过脚本 scripts/bloat-o-meter 比较前后两次编译出的 vmlinux 文件中符号的增减变化
./scripts/bloat-o-meter vmlinux.old vmlinux5. 参考资料
https://eklitzke.org/how-tail-call-optimization-works https://www.ruanyifeng.com/blog/2015/04/tail-call.html https://www.cnblogs.com/arnoldlu/p/10442099.html