firebase - 为什么 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 上慢得多?
解决方案
部署 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 的处理能力。
推荐阅读
- javascript - 如何切换 nativeElement
- c++ - Qt中的自动排他工具按钮
- ansible - Ansible 如何使用循环在一台主机上同时运行多个任务
- angular - 派生类测试。失败:无法解析所有参数:(?,?)(Angular 5)
- python - 值列表彼此的余弦相似度
- java - Android可以将图像作为输入流插入吗?
- javascript - 重定向我的 js 代码后,我刷新页面后才起作用
- javascript - 如何在javascript中从“datetime-local”转换为mysql.Timestamp
- excel - 如何将数组中的数据传递到html正文的一部分
- android - android.view.ContextThemeWrapper 无法转换为 android.app.Activity