谷歌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请求应该被更快地处理,一个实例只能连续地处理请求。 但是,如果这个限制持续很久,我会感到非常惊讶。
- 删除Google App Engine中的所有数据
- Eclipse和Google App Engine:ImportError:没有名为_sysconfigdata_nd的模块; 无法识别的参数:–high_replication
- 在Google App Engine上selectJava vs Python
- App Engine调度程序何时使用新线程与新实例?
- 如何在Google App Engine中导入模块?
- 使用标准库可以在Go中嵌套模板吗? (Google App Engine)
- 如何删除Google App Engine中的所有数据存储?
- 为什么我的java编译器级别不匹配我安装的项目构面?
- Google App Engine的优点和缺点