如何确定我的 lambda 函数在编译过程中是不是已“预置”?

Posted

技术标签:

【中文标题】如何确定我的 lambda 函数在编译过程中是不是已“预置”?【英文标题】:How can I determine if my lambda function has been "prejitted" during compilation?如何确定我的 lambda 函数在编译过程中是否已“预置”? 【发布时间】:2021-12-26 07:30:39 【问题描述】:

我有一个 .NET Core 3.1 项目,其 .csproj 文件为:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
    <AWSProjectType>Lambda</AWSProjectType>
    <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
    <PublishReadyToRun>true</PublishReadyToRun>
  </PropertyGroup>

</Project>

我正在使用 AWS CodeBuild 在 Ubuntu 映像 (aws/codebuild/standard:5.0) 上编译和部署项目。

由于我是在 Ubuntu 上构建并且确实如此,因此我假设我的代码正在“预置”部署以避免冷启动。我如何才能确定它是否按预期工作?例如,我可以检查构建日志中的内容吗?或者我能找到关于 Lambda 函数的一些指标吗?

【问题讨论】:

你是绝对正确的 - 它大约是 3 倍大。请作为答案提交,我会将其标记为正确。 【参考方案1】:

我不确定实际的 R2R 格式,我认为格式可能不是那么清晰,并且包含 MSIL 标头和 AOT 代码。

但是,您可以检查编译大小,由于 prejitting 的性质,R2R AOT 格式应该大得多。


其他资源

ReadyToRun Compilation

【讨论】:

以上是关于如何确定我的 lambda 函数在编译过程中是不是已“预置”?的主要内容,如果未能解决你的问题,请参考以下文章

使用nodejs中的AWS Lambda函数上传音频文件

C++ lambda 友谊

如何将 AWS 区域传递给 lambda 函数?

如何确定AWS Lambda函数中的当前区域?

C# 使用 AWS lambda 时,我可以确定函数中的析构函数会被执行吗?

如何在 Lambda 函数中定义 emit() 属性