函数调用成本如何有效降低?

2026-05-22 14:120阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计5067个文字,预计阅读时间需要21分钟。

函数调用成本如何有效降低?

译者在注中提到:原文链接为https://johnysswlab.com/make-your-programs-run-faster-avoid-function-calls/,翻译得到作者同意。这是关于程序底层优化第二篇文章,第一篇是关于缓存与优秀程序设计指南。

译者注:本文原始链接为johnysswlab.com/make-your-programs-run-faster-avoid-function-calls/,翻译获得作者同意。

这是程序底层优化的第二篇文章,第一篇文章缓存友好程序设计指南。

现代软件设计像层(layer),抽象(abstractions)和接口(interfaces)。 这些概念被引入到编程中的初衷是好的,因为它们允许开发者编写更容易理解和维护的软件。 在编译器的世界里,所有这些结构都转化为对函数的调用:许多小函数相互调用,而数据逐渐从一层移动到另一层。

这个概念的问题是,原则上函数调用代价是昂贵的。为了进行调用,程序需要把调用参数放在程序栈上或放到寄存器中。它还需要保存自己的一些寄存器,因为它们可能被调用的函数覆盖。被调用的函数不一定在指令缓存中,这可能导致执行延迟和性能降低。当被调用的函数执行完毕时,返回到原函数也会有性能上的损失。

一方面,函数作为一个概念是很好的,它使软件更可读,更容易维护。另一方面,过多地调用微小的函数,肯定会使程序变慢。

避免函数调用的一些技巧

让我们来看看避免函数调用的一些技巧。

内联

内联是编译器用来避免函数调用和节省时间的一种技术。简单地说,内联一个函数意味着把被调用的函数主体放在调用的地方。

阅读全文

本文共计5067个文字,预计阅读时间需要21分钟。

函数调用成本如何有效降低?

译者在注中提到:原文链接为https://johnysswlab.com/make-your-programs-run-faster-avoid-function-calls/,翻译得到作者同意。这是关于程序底层优化第二篇文章,第一篇是关于缓存与优秀程序设计指南。

译者注:本文原始链接为johnysswlab.com/make-your-programs-run-faster-avoid-function-calls/,翻译获得作者同意。

这是程序底层优化的第二篇文章,第一篇文章缓存友好程序设计指南。

现代软件设计像层(layer),抽象(abstractions)和接口(interfaces)。 这些概念被引入到编程中的初衷是好的,因为它们允许开发者编写更容易理解和维护的软件。 在编译器的世界里,所有这些结构都转化为对函数的调用:许多小函数相互调用,而数据逐渐从一层移动到另一层。

这个概念的问题是,原则上函数调用代价是昂贵的。为了进行调用,程序需要把调用参数放在程序栈上或放到寄存器中。它还需要保存自己的一些寄存器,因为它们可能被调用的函数覆盖。被调用的函数不一定在指令缓存中,这可能导致执行延迟和性能降低。当被调用的函数执行完毕时,返回到原函数也会有性能上的损失。

一方面,函数作为一个概念是很好的,它使软件更可读,更容易维护。另一方面,过多地调用微小的函数,肯定会使程序变慢。

避免函数调用的一些技巧

让我们来看看避免函数调用的一些技巧。

内联

内联是编译器用来避免函数调用和节省时间的一种技术。简单地说,内联一个函数意味着把被调用的函数主体放在调用的地方。

阅读全文