谷歌Go的资源使用与Appengine上的Python和Java

Google Go会使用比Appengine上的Python和Java更less的资源吗? 实例启动时间是否比Java和Python的启动时间快?

go程序是以二进制文件还是源代码的forms上传的,如果是以源代码的forms上传,那么它会被编译一次或在每个实例启动时被编译一次?

换句话说:从成本的angular度来看,在应用引擎中使用Go会受益吗? (只考虑了appengine资源而不是开发时间的成本)

Google Go会使用比Appengine上的Python和Java更less的资源吗? 实例启动时间是否比Java和Python的启动时间快?

是的,Go实例的内存低于Python和Java(<10 MB)。

是的,Go实例的启动速度比Java和Python等同,因为运行时只需要读取一个用于启动应用程序的可执行文件。

即使是atm单线程,Go实例也可以使用goroutine同时处理传入的请求,这意味着如果1个goroutine正在等待I / O,另一个可以处理传入的请求。

go程序是以二进制文件还是源代码的forms上传的,如果是以源代码的forms上传,那么它会被编译一次或在每个实例启动时被编译一次?

Go程序作为源代码上传,并在使用SDK部署新版应用程序时编译(一次)到二进制文件。

换句话说:从成本的angular度来看,在应用引擎中使用Go会受益吗?

Go运行时在性能/价格比方面具有绝对优势,但不会影响Peter答复所述的其他API配额的定价。

实例的成本只是应用程序成本的一部分。 我现在只使用Java运行时,所以我不知道Python或Go会带来多less更有效率的东西,但是我不认为它会有数量级的差别。 我知道实例并不是您需要考虑的唯一成本。 根据您的应用程序的function,您可能会发现API或存储成本比运行时间之间的任何细微差异更重要。 所有的API成本将与您使用的任何运行时间相同。

语言“可能”影响这些成本:

  • 按需的前端实例
  • 保留的前端实例
  • 支持的实例

语言独立成本:

  • 高复制数据存储(每演出存储)
  • 传出带宽(每演出)
  • 数据存储API(每个操作)
  • Blobstore API存储(每演出)
  • 电子邮件API(每封邮件)
  • XMPP API(每节)
  • 频道API(每频道)

这个问题大多不相关。

Go应用程序的最小内存占用less于比Java应用程序less的Python应用程序。 它们的每个实例的成本相同,所以除非您的应用程序使用额外的堆空间更好地执行,否则这个问题是无关紧要的。

启动时间小于Python启动时间,小于Java启动时间。 除非您的应用程序有特定的原因需要通过大量的实例启动/closures周期进行转换,否则从成本的angular度来看,这是无关紧要的。 另一方面,如果您的应用程序在极短时间内出现突发情况,启动时间可能会占上风。

正如其他答案所述,所有平台的许多成本是相同的 – 特别是数据存储操作。 如果Go vs Python vs Java会对实例小时账单产生影响,则与下列相关:

  • 你的应用程序是否产生大量的垃圾? 对于许多应用程序来说,最大的计算成本就是垃圾收集器。 到目前为止,Java已经是最成熟的GC,像串行化这样的基本操作要比使用Python快得多。 Go的垃圾收集器似乎是一个持续的发展主题,但从粗略的网页search,似乎并不是一个骄傲(尚)的问题。

  • 你的应用是计算密集型的吗? Java(JIT编译)和Go可能比Python更适合math运算。

三种语言都有自己的美德和诅咒。 大部分情况下,你最好让其他问题占主导地位 – 你最喜欢哪种语言?

这可能是关于如何分配资源比您的语言select更多。 我读到GAE是build立在与语言无关的基础上的,所以对任何语言来说,内在优势可能都没有,但是你可以通过select你感到舒适和动力的语言来获得优势。 我使用python,并且使得我的部署更加经济高效的是升级到python 2.7,如果使用正确的2.6子集,那么只能进行升级,这是很好的。 所以,如果你select一种你熟悉的语言,那么你很可能会从使用语言而不是组合语言+环境本身的能力中获得优势。

总之,我会推荐python,但这是我尝试过的唯一的应用程序引擎语言,这是我的select,即使我知道Java相当好,项目的代码将使用我最喜欢的语言python更加紧凑。

我的应用程序是中小型的,它们的成本几乎没有:

在这里输入图像说明

我还没有使用Go,但是我强烈怀疑它会加载和执行实例的速度要快得多,并且纯粹因为编译时使用更less的内存。 据我所知,Python相对于Java来说更具响应能力,至less在启动时间方面。

实例的加载/启动时间非常重要,因为当你的实例被更多的请求所触发,而不是它可以处理的时候,它会激活另一个实例。 这使得这个请求需要更长的时间,可能给人的印象是网站一般很慢。 Java和Python都必须启动他们的虚拟机/解释器,所以我希望Go在这里的速度要快一个数量级。

还有一个问题 – 现在Python2.7是可用的,Go是唯一的单线程选项(具有讽刺意味的是,Go被devise成一个现代化的多进程语言)。 所以尽pipeGo请求应该被更快地处理,一个实例只能连续地处理请求。 但是,如果这个限制持续很久,我会感到非常惊讶。