Performance 使用';静态vs';A.

Performance 使用';静态vs';A.,performance,memory,rust,lifetime,Performance,Memory,Rust,Lifetime,考虑到以下功能,您期望有哪些性能差异 pub fn foo<'a>(data: Request) -> Response<'a> { // } pub fn foo{ // } vs pub-fn-foo(数据:请求)->Response这两个函数将生成相同的机器代码。编译期间将删除生存期。如果您的程序签出,则它们没有进一步的意义 特别是,把生命看作“这在记忆中保留了这么长时间”是错误的。生命都是关于“这活得足够长”。这是一个微妙的区别,但要记住的关键是

考虑到以下功能,您期望有哪些性能差异

pub fn foo<'a>(data: Request) -> Response<'a> {
    //
}
pub fn foo{
//
}
vs


pub-fn-foo(数据:请求)->Response这两个函数将生成相同的机器代码。编译期间将删除生存期。如果您的程序签出,则它们没有进一步的意义

特别是,把生命看作“这在记忆中保留了这么长时间”是错误的。生命都是关于“这活得足够长”。这是一个微妙的区别,但要记住的关键是,生命是描述性的,而不是规定性的。给予某件东西一辈子并不意味着它能活一段时间;由于其他原因(例如,全局变量可以用
“static
”引用),它在必要的持续时间内处于活动状态,或者程序无法编译

其次,代码片段中的生命周期根本没有立即的影响。它们只是
响应
结构的参数。由该结构决定如何使用生命周期。它是否在内部包含对此生事物的引用?它是否只是转发到一个用于将响应与某个连接关联起来的
PhantomData

第三,给定函数的定义方式(仅在返回类型中使用寿命参数),对实现的要求没有区别。因为这里的生存期是由调用者选择的,所以函数必须准备好满足
静态的
生存期。所有这一切只会让打电话的人更加恼火

综上所述:

  • 人生不是这样的
  • 第一个版本没有用处
pub fn foo(data: Request) -> Response<'static> {
    //
}