如何 0 成本启动全员 AI 技能提升?戳> 了解详情
写点什么

AWS Lambda 最新编程语言冷启动时间测试:Node.js 性能最高

  • 2019-09-24
  • 本文字数:1752 字

    阅读完需:约 6 分钟

AWS Lambda最新编程语言冷启动时间测试:Node.js性能最高

本文,作者将比较 AWS 平台上各编程语言的冷启动成绩。随着最近 Ruby 的加入,再加上 2018 年的结果作为参照对象,相信这将是一次有趣的分析。


冷启动是什么?

在无服务器计算世界中,我们要求函数以按需方式运行,并在不需要时被及时弃用。这种仅在必要时运行函数的整个执行过程,即被称为冷启动现象。



定期冷启动(视频截图)


冷启动代表着代码在首次执行时所消耗的时长(一般为 5 到 25 分钟)。这意味着相关代码需要进行下载、容器化、启动以及运行准备。此外,整个过程在语言性能方面存在着巨大差异,不同语言的时耗可能相关 20 到 60 倍。冷启动的长度取决于几个核心变量,例如语言和运行时、专用于函数的资源量(mb)以及所运行函数中的包和依赖关系。


尽管并非随时存在,但冷启动时间仍是一项重要指标。每当我们面对一连串请求流量时,Lambda 函数就有可能出现冷启动操作。

方法

我测试了以下几种语言:Go 1.x、Node.js 8.10、Java 8、Ruby 2.5、Python 3.6 以及.netcore 2.1。分别利用这些语言编写出三个函数,函数本身没有什么实际作用,只是发出“hello world”内容。每种语言的三个函数分别被分配以 128 mb、1024 mb 以及 3008 mb 内存。接下来,我又创建了一个阶梯函数,用以触发这所有 18 个函数,我会定期从 AWS x-ray 处手动收集测试结果。

结果

我收集了冷启动时间,外加 AWS x-ray 引入的新变量——初始化,这项变量用于测量环境设置时间。


下图所示为冷启动成绩对比,共分为三个部分,分别为 128 mb、1024 mb 以及 3008 mb 内存配置下的对应结果。



冷启动时间,128 mb、1024 mb 以及 3008 mb 内存配置下的各函数成绩,单位为毫秒。可以看到,整体结果与 2018 年相同,每种语言分配到的资源量越大、启动时长越短,而经过编译的语言速度相对更慢。


不过令人惊奇的是,与 2018 年不同,这一次,Node.js 成了最大的赢家,紧随其后的分别是 Ruby 以及 Python。在 2018 年的排名中,Python 夺得榜首,我认为这是因为 Lambda 本身就运行在 Python 环境中。由于启动时不需要额外的运行时,所以 Python 获得了明显的优势。而结合新一年的成绩,我们看到其它运行时也迎来了显著优化,甚至足以与 Python 正面对抗。



平均初始化时间,由 AWS x-ray 提供,单位为毫秒。


上图所示为各语言运行时的平均初始化时间。Node.js 再一次与 Python 处于同一水平线,也许是因为 AWS 团队构建了一个针对 Node.js 函数进行优化的独立处理程序?



平均冷启动时间,单位为毫秒


平均冷启动时间的可视化结果,可以看到大多数语言的性能表现都有所提升。与 2018 年不同,今年各种语言似乎都不再高度依赖所能使用的内存资源。当然,除了 Java 和.Net 之外。我很好奇,这是不是代表着 AWS 的工程团队已经找到了无服务器运行效率的上限。


另外,如果在 2020 年再次进行实验,结果又会怎样?我们还会看到如此显著的改善吗?



2018 年平均冷启动时间,单位为毫秒



2019 年平均冷启动时间,单位为毫秒


过去 16 个月,出现了明显的性能改进。事实上,在这样一波全面改进之下,冷启动时间成本已经相当低廉,几乎不需要给予特别关注。Node.js 目前为性能最高的冷启动语言,在短短 16 个月中性能提升达 74.6%,具体缩短了 638 毫秒。



相较于上一年,各语言在同样场景下的冷启动时间都得到显著改善


这确实是对 AWS 工程团队最好的证明。他们不仅开发出了这样的产品,而且一直在努力加以打磨。

温函数

最后,我还打算整理一下关于温函数的性能表现。通过这种方式,我们可以了解 Lambda 函数在大多数情况下的实际执行速度。



温启动,单位为毫秒


经过适当预热的 lambda 函数一直保持着较高运行效率,可以看到各种语言之间的差别已经非常有限。


原文链接:


https://levelup.gitconnected.com/aws-lambda-cold-start-language-comparisons-2019-edition-%EF%B8%8F-1946d32a0244


2019-09-24 09:126061

评论

发布
暂无评论
发现更多内容

易观分析《2022年中国银行业隐私计算平台供应商实力矩阵分析》研究报告正式启动

易观分析

银行技术

LSF 集群全面监控!浅析 HPC 基于龙蜥操作系统的迁移替代解决方案

OpenAnolis小助手

开源 解决方案 龙蜥操作系统 常青藤开源科技 HPCinsights

物联网低代码平台常用《组件介绍》

AIRIOT

低代码 物联网 低代码开发平台 低代码平台 低代码,项目开发

2022 开源软件安全状况报告:超41%的企业对开源安全没有足够的信心

SEAL安全

DevSecOps 开源安全 软件供应链 安全左移

太阳能无线LED显示屏的特点

Dylan

LED LED显示屏

setInterval、setTimeout和requestAnimationFrame

源字节1号

软件开发

一套十万级TPS的IM综合消息系统的架构实践与思考

JackJiang

网络编程 架构设计 即时通讯 im开发

Flink流处理API大合集:掌握所有flink流处理技术,看这一篇就够了

百思不得小赵

大数据 6月月更 flink api

VPS是干嘛用的?有哪些知名牌子?与云服务器有什么区别?

行云管家

运维 等保备案 VPS

layui-vue简单体验

Python研究所

6月月更

大神详解开源 BUFF 增益攻略丨直播讲座

Apache IoTDB

开源 面试 求职 秋招 线上讲座

讲师征集令 | Apache DolphinScheduler Meetup分享嘉宾,期待你的议题和声音!

白鲸开源

Apache 大数据 开源 workflow dolpinsheduler

行业分析| 快对讲,楼宇对讲

anyRTC开发者

音视频 快对讲 语音对讲 视频对讲 楼宇对讲

人人都可以参与开源!龙蜥社区最不容错过的开发者活动来了

OpenAnolis小助手

开源 龙蜥社区 礼品 开发者激励 贡献

TiDB v6.0.0 (DMR) :缓存表初试丨TiDB Book Rush

PingCAP

TiDB

《数字经济全景白皮书》消费金融数字化篇 重磅发布

易观分析

消费金融

wallys/DR7915-wifi6-MT7915-MT7975-2T2R-support-OpenWRT-802.11AX-supporting-MiniPCIe-Module

wallys-wifi6

智联招聘基于 Nebula Graph 的推荐实践分享

NebulaGraph

知识图谱 Nebula Graph

Java培训 动态代理的底层原理

@零度

JAVA开发 动态代理

2022中国信通院首届业务与应用安全发展论坛成功召开!

中国IDC圈

如临现场的视觉感染力,NBA决赛直播还能这样看?

阿里云CloudImagine

音视频 直播 音视频直播 直播解决方案

百问百答第44期:应用性能探针监测原理-Python探针

博睿数据

APM AIOPS 智能运维 博睿数据 性能监测

当量子计算遇上人工智能

启科量子开发者官方号

人工智能 算力 量子计算

叮!Techo Day 腾讯技术开放日如约而至!

CODING DevOps

CODING DevOps Cloud Studio Techo 腾讯技术开放日

web前端培训Node.js 如何连接到 PostgreSQL 数据库

@零度

node.js 前端开发

《运营之光3.0》全新上市——跨越时代,自我颠覆的诚意之作!

博文视点Broadview

小白创业做电商,选对商城系统很重要!

CRMEB

中国内地仅四家突围 联想智慧颐和园荣获 “2022年IDC亚太区智慧城市大奖”

科技大数据

等保备案主体是谁?在当地网安进行备案是吗?

行云管家

等保 等级保护 等保备案

通过大数据培训学习后到35岁后为什么会失业

@零度

百度APP 基于Pipeline as Code的持续集成实践

百度Geek说

Java’

AWS Lambda最新编程语言冷启动时间测试:Node.js性能最高_语言 & 开发_Nathan Malishev_InfoQ精选文章