首页 > 解决方案 > 为什么 Firebase Cloud Function 部署后会比在模拟器中慢得多,除了冷启动?

问题描述

我有一个 Firebase 云函数,它可以解析一些 HTML 等等。我已经测量了 HTML 解析方法本身,在 MacBook Pro 上的模拟器中大约需要 300 毫秒。部署到 Firebase 似乎需要大约 4-8 秒,这对于我的应用程序来说不是可以容忍的持续时间。

我正在使用 Dart 使用 firebase_functions_interop 编写我的 Firebase Cloud Functions并使用Dart2JS编译为 JS。在不同环境之间执行截然不同的方法实际上是 Dart 内置的 HTML 解析方法。我知道冷启动是云功能花费比预期更长的一个常见原因,但这似乎不是罪魁祸首,因为我明确测量了解析 HTML 所需的时间,这就是我看到巨大不同之处。

是否可以预期云功能在生产中的运行速度会比在 MacBook Pro 上慢得多?

标签: firebasedartgoogle-cloud-functionsdart2js

解决方案


部署 firebase 云功能时,可以自定义运行时环境。但是在这里,没有CPU容量。如果您直接查看 Cloud Function 文档(Firebase Cloud Functions 由 Google Cloud Functions 支持),您可以看到内存数量和 CPU 能力之间的相关性。

注意:4Gb 内存 = 2CPU @2.4Ghz,而不是 1 CPU(一个线程)@4.8Ghz

所以现在,使用 2Gb 内存部署您的 Firebase Cloud Function,速度应该会更好(默认为 256Mb)。但请记住这一点:Cloud Function 是单核 CPU,并且限制为 2.4Ghz。你的 macbook pro 应该有 8 个或 16 个 CPU,并具有 3.4Ghz 的处理能力。


推荐阅读