Page 94 - 《软件学报》2025年第5期
P. 94
1994 软件学报 2025 年第 36 卷第 5 期
Azure Functions 的成本也是成本最低的. 然而, 亚马逊 Lambda、谷歌 Cloud Functions 和阿里巴巴 Function
Compute 分别需要 123.91 ms、186.28 ms 和 138.97 ms 来执行该任务, 它们的上下四分位数范围也都高于微软
Azure Functions. 如果不考虑基于内存消耗策略的微软 Azure Functions, 亚马逊 Lambda 的执行时间更短, 花费的
成本也是更低, 但阿里巴巴 Function Compute 的执行结果和亚马逊 Lambda 相近, 只高出约 15 ms. 在这两个平台
执行 CPU 密集型任务的成本上, 阿里巴巴 Function Compute 和亚马逊 Lambda 也相近, 只高出 0.000 03 美元. 根
据图 10 中关于 CPU 密集型任务的性能分布, 谷歌 Cloud Functions 和微软 Azure Functions 所获得的执行性能数
据分布更加分散, 而亚马逊 Lambda 和阿里巴巴 Function Compute 所获的性能数据分布较为稳定. 这表明亚马逊
Lambda 和阿里巴巴 Function Compute 在执行 CPU 密集型任务时更加可靠, 大部分执行结果分别落在
122.52–125.22 ms 之间, 以及 136.88–143.53 ms 之间. 此外, 从图 10 中还可以观察到谷歌 Cloud Functions 和微软
Azure Functions 平台产生了大量异常值, 这些异常值表示与其他性能数据相比明显偏离正常范围的数据点. 因此,
综合考虑任务执行延迟大小, CPU 密集型任务适合在微软 Azure Functions、亚马逊 Lambda 和阿里巴巴 Function
Compute 上执行, 而且这些平台花费的成本相对更少; 而就性能稳定性而言, CPU 密集型任务更适合执行在亚马
逊 Lambda 和阿里巴巴 Function Compute 这两个平台上执行.
对于内存密集型任务, 根据表 7 的中位数结果, 微软 Azure Functions 执行时间为 116.36 ms, 阿里巴巴
Function Compute 执行时间为 341.98 ms, 亚马逊 Lambda 执行时间为 556.36 ms, 而谷歌 Cloud Functions 执行时间
为 709.57 ms. 可以看出, 微软 Azure Functions 在执行内存密集型任务时所需的时间最少, 而谷歌 Cloud Functions
执行这类任务所需时间则是微软 Azure Functions 的 7 倍, 这表明谷歌 Cloud Functions 并不适合执行内存密集型
任务. 而且, 微软 Azure Functions 执行该任务花费的成本也是最低 (0.000 43 美元). 谷歌 Cloud Functions 执行该任
务的成本约是微软 Azure Functions 成本的 5 倍. 若不考虑基于内存消耗的微软 Azure Functions, 其他 3 个平台中
阿里巴巴 Function Compute 的执行时间相对较短, 成本也是相对较低. 从图 10 中关于内存密集型任务的性能数据
分布来看, 亚马逊 Lambda 获得的执行性能数据最为稳定, 其执行时间限定在 538.77–574.46 ms 之间. 而其他平台
产生的性能数据相对不稳定, 且存在异常值. 因此, 考虑任务执行性能数据的大小, 内存密集型任务适合在微软
Azure Functions 和阿里巴巴 Function Compute 上执行, 且这些平台执行该任务的成本更低; 而就任务执行的性能
稳定性而言, 内存密集型任务适合在亚马逊 Lambda 上执行.
对于磁盘 IO 密集型任务, 根据表 7 的中位数结果, 亚马逊 Lambda、谷歌 Cloud Functions 和阿里巴巴
Function Compute 分别执行 4 233.19 ms、4 380.13 ms 和 3 349.69 ms. 总体来看, 这 3 个平台在执行磁盘 IO 密集
型任务时需要超过 3 s 的执行时间, 但其中阿里巴巴 Function Compute 所需时间相对较短, 且其花费的成本相对更
少. 与此相比, 微软 Azure Functions 仅需 469 ms 的执行时间, 几乎提升了 10 倍. 另外, 相比较于其他平台, 微软
Azure Functions 在执行该任务的成本上也是最低的. 从图 11 的性能数据分布来看, 亚马逊 Lambda 和微软 Azure
Functions 展现出稳定的执行结果, 而谷歌 Cloud Functions 和阿里巴巴 Function Compute 所产生的性能数据更加
分散, 并且存在更多异常值. 因此, 考虑任务执行性能数据的大小, 磁盘 IO 密集型任务适合在微软 Azure
Functions 和阿里巴巴 Function Compute 上执行, 且这两个平台相比较其他平台来说, 执行该任务的成本相对更低;
而就执行的性能稳定性而言, 该任务适合在亚马逊 Lambda 和微软 Azure Functions 上执行.
对于网络密集型任务, 根据表 7 的中位数结果, 微软 Azure Functions 和阿里巴巴 Function Compute 相比亚马
逊 Lambda 和谷歌 Cloud Functions 获得了更好的执行性能结果和更低的成本. 具体来说, 微软 Azure Functions 执
行时间为 109.57 ms, 成本是 0.000 42 美元. 阿里巴巴 Function Compute 执行时间为 159.82 ms, 成本是 0.000 53 美
元. 而亚马逊 Lambda 和谷歌 Cloud Functions 执行性能则慢于微软 Azure Functions 和阿里巴巴 Function Compute
的 2 倍左右, 花费的成本上也高两倍左右. 从图 11 中的网络密集型任务的性能数据分布来看, 阿里巴巴 Function
Compute 和亚马逊 Lambda 执行的性能结果最为稳定, 而微软 Azure Functions 和谷歌 Cloud Functions 所获得的性
能结果相对较为分散. 因此, 考虑任务执行性能数据的大小, 网络密集型任务适合在微软 Azure Functions 和阿里巴
巴 Function Compute 上执行, 且这些平台执行该任务花费的成本也低; 而就任务执行的性能稳定性而言, 网络密集
型任务适合在亚马逊 Lambda 和阿里巴巴 Function Compute 上执行.