Google Go、Python 和 Java 在 Appengine 上的资源使用情况比较

54 投票
5 回答
13264 浏览
提问于 2025-04-17 05:47

谷歌的Go语言在Appengine上使用的资源会比Python和Java少吗?Go的实例启动时间比Java和Python快吗?

Go程序是以二进制文件的形式上传,还是以源代码的形式上传?如果是以源代码上传,那它是在每次实例启动时编译,还是只编译一次?

换句话说:使用Go在Appengine上会让我在成本上受益吗?(这里只考虑Appengine资源的费用,不考虑开发时间)

5 个回答

17

这个问题其实不太重要。

Go应用程序的内存占用最少,其次是Python,最后是Java。它们每个实例的费用差不多,所以除非你的应用需要更多的内存来提高性能,否则这个问题就不重要了。

Go的启动时间比Python短,而Python又比Java短。除非你的应用有特别的需求,需要频繁地启动和关闭实例,否则从费用的角度来看,这个问题也不重要。不过,如果你的应用在非常短的时间内需要处理大量请求,启动时间可能会成为一个优势。

正如其他回答提到的,很多费用在所有平台上是相同的,特别是数据存储操作。Go、Python和Java之间的差异对实例小时费用的影响主要与以下几点有关:

  • 你的应用会产生很多垃圾吗?对于很多应用来说,最大的计算成本是垃圾回收。Java的垃圾回收技术最成熟,像序列化这样的基本操作速度比Python快得多。Go的垃圾回收器似乎还在不断发展中,但根据一些简单的网络搜索,似乎还没有特别引以为傲的地方。

  • 你的应用计算密集吗?Java(即时编译)和Go在数学运算方面可能比Python更好。

这三种语言各有优缺点。大多数情况下,还是让其他问题主导你的选择吧——你最喜欢用哪种语言工作呢?

23

应用程序的成本不仅仅是实例的费用。我现在只使用Java运行环境,所以我不太清楚使用Python或Go会有多大的效率差异,但我觉得差别不会太大。我知道,实例并不是你需要考虑的唯一费用。根据你的应用程序的功能,你可能会发现API费用或存储费用比不同运行环境之间的小差异更重要。无论你使用什么运行环境,所有的API费用都是一样的。

语言“可能”会影响这些费用:

  • 按需前端实例
  • 预留前端实例
  • 后端实例

与语言无关的费用:

  • 高复制数据存储(每存储一GB)
  • 外发带宽(每GB)
  • 数据存储API(每次操作)
  • Blob存储API(每GB)
  • 邮件API(每封邮件)
  • XMPP API(每个消息段)
  • 频道API(每个频道)
48

谷歌的Go语言在Appengine上会比Python和Java消耗更少的资源吗?它的实例启动速度比Java和Python快吗?

是的,Go语言的实例内存占用比Python和Java少(少于10MB)。

是的,Go语言的实例启动速度比Java和Python快,因为它只需要读取一个可执行文件来启动应用程序。

另外,即使Go语言目前是单线程的,它也能通过goroutines同时处理多个请求。这意味着如果一个goroutine在等待输入输出,另一个goroutine可以处理新的请求。

Go程序是以二进制文件上传,还是以源代码上传?如果是以源代码上传,是在每次启动实例时编译,还是只编译一次?

Go程序是以源代码的形式上传的,在使用SDK部署新版本应用时会编译成二进制文件(只编译一次)。

换句话说:在成本方面,我使用Go语言在App Engine上会有好处吗?

从性能和价格的比例来看,Go语言确实有优势,但这并不会影响其他API配额的定价,正如Peter所说的那样。

撰写回答