嵌套函数或方法调用会降低应用程序的性能吗
can nested function or method call reduce performance of application
我正在使用 asp.net 和 C# 开发应用程序,其中我们的项目架构有很多嵌套函数调用。
public Employe GetEmployeOrder(orderid, employe){
GetEmployeOrderWithDetails(orderid, employe.ShippingId,BillingId);
}
public Employe GetEmployeOrderWithDetails(guid orderid,guid ShippingId,guid BillingId)
{
// Another function call
}
您可能已经知道我在说什么场景。如果我有这样的嵌套调用,它会影响我的应用程序的性能吗?
在Java
直接影响不大。内联 35 到 325 字节字节代码的简单方法,因此它们不会影响性能。几乎立即内联 35 字节的小方法,并且默认内联 "frequently" 最多 325 字节的调用方法(这可以增加)。
你 运行 遇到问题的地方是代码越多越难推理。难以推理的代码,开发人员很难优化(在某些情况下是 JIT),例如假设您计算了一个昂贵的参数,而该参数被嵌套、嵌套、嵌套的调用者丢弃。另一个常见的性能问题是转换,例如一个 String 被解析成一个 double ,然后被转换成一个 String ,一个 BigDecimal ,最后又是一个 String 。如果您没有多层嵌套,则更明显的是,以字符串开头的内容可以保留为字符串。
通常情况下,如果有疑问,假设最简单、最清晰的代码是最好的。
简单 - 是
你应该让你的代码尽可能简单,每个嵌套的函数调用都会在程序内存堆栈上产生负载 - 处理器正在记住要跳回的位置,以及要带回的内容,还没有完成的函数会被记住在堆栈上。
更简单? - 一遍又一遍的循环可能会导致有趣的事情,但是,少于 20 级或循环几乎是不可见的。
我正在使用 asp.net 和 C# 开发应用程序,其中我们的项目架构有很多嵌套函数调用。
public Employe GetEmployeOrder(orderid, employe){
GetEmployeOrderWithDetails(orderid, employe.ShippingId,BillingId);
}
public Employe GetEmployeOrderWithDetails(guid orderid,guid ShippingId,guid BillingId)
{
// Another function call
}
您可能已经知道我在说什么场景。如果我有这样的嵌套调用,它会影响我的应用程序的性能吗?
在Java
直接影响不大。内联 35 到 325 字节字节代码的简单方法,因此它们不会影响性能。几乎立即内联 35 字节的小方法,并且默认内联 "frequently" 最多 325 字节的调用方法(这可以增加)。
你 运行 遇到问题的地方是代码越多越难推理。难以推理的代码,开发人员很难优化(在某些情况下是 JIT),例如假设您计算了一个昂贵的参数,而该参数被嵌套、嵌套、嵌套的调用者丢弃。另一个常见的性能问题是转换,例如一个 String 被解析成一个 double ,然后被转换成一个 String ,一个 BigDecimal ,最后又是一个 String 。如果您没有多层嵌套,则更明显的是,以字符串开头的内容可以保留为字符串。
通常情况下,如果有疑问,假设最简单、最清晰的代码是最好的。
简单 - 是
你应该让你的代码尽可能简单,每个嵌套的函数调用都会在程序内存堆栈上产生负载 - 处理器正在记住要跳回的位置,以及要带回的内容,还没有完成的函数会被记住在堆栈上。
更简单? - 一遍又一遍的循环可能会导致有趣的事情,但是,少于 20 级或循环几乎是不可见的。