首页 文章

Google上的google Go与Python和Java的资源使用情况

提问于
浏览
50

谷歌Go将使用比Appengine上的Python和Java更少的资源吗?实例启动时间是否比Java和Python的启动时间更快?

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

换句话说:从成本的角度来看,我是否会从使用Go in app引擎中受益? (仅考虑到发动机资源的成本而非开发时间)

5 回答

  • 1

    谷歌Go将使用比Appengine上的Python和Java更少的资源吗?实例启动时间是否比Java和Python的启动时间更快?

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

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

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

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

    当使用SDK部署新版本的应用程序时,Go程序作为源代码上载并编译(一次)为二进制文件 .

    换句话说:从成本角度来看,我是否会从使用Go in app引擎中受益?

    Go运行时在性能/价格比方面肯定有优势,但它并不影响Peter回答所描述的其他API配额的定价 .

  • 20

    实例的成本只是应用程序成本的一部分 . 我现在只使用Java运行时,所以我不知道Python或Go会有多少或更低效的东西,但我不认为它会有不同的数量级 . 我知道实例并不是您需要考虑的唯一成本 . 根据您的应用程序的作用,您可能会发现API或存储成本比运行时之间的任何微小差异更重要 . 无论您使用何种运行时,所有API成本都是相同的 .

    Language "might" affect these costs:

    • 按需前端实例

    • 保留的前端实例

    • 支持实例

    Language Independent Costs:

    • 高复制数据存储(每个存储的gig)

    • 出局带宽(每演出)

    • 数据存储API(每个操作)

    • Blobstore API storge(每个演出)

    • 电子邮件API(每封电子邮件)

    • XMPP API(每节)

    • Channels API(每 Channels )

  • 0

    这个问题大多无关紧要 .

    Go应用程序的最小内存占用量小于小于Java应用程序的Python应用程序 . 它们都是相同的每个实例,所以除非你的应用程序在额外的堆空间下表现更好,否则这个问题就无关紧要了 .

    Go启动时间小于Python启动时间,小于Java启动时间 . 除非您的应用程序有特殊原因需要通过大量实例启动/关闭周期,否则从成本角度来看这是无关紧要的 . 另一方面,如果您的应用程序在非常短的时间内异常突发,启动时间可能是一个优势 .

    正如其他答案所提到的,许多成本在所有平台中都是相同的 - 特别是数据存储区操作 . 在某种程度上,Go vs Python vs Java将对实例小时账单产生影响,它与以下内容有关:

    • 你的应用程序是否会产生大量垃圾?对于许多应用程序,最大的计算成本是垃圾收集器 . 到目前为止,Java是最成熟的GC,而像序列化这样的基本操作比使用Python快得多 . Go的垃圾收集器似乎是一个持续的开发主题,但从粗略的网络搜索来看,似乎并不是一件值得骄傲的事情 .

    • 您的应用是否计算密集?对于数学运算,Java(JIT编译)和Go可能比Python更好 .

    这三种语言都有其优点和诅咒 . 在大多数情况下,你最好让其他问题占主导地位 - 你最喜欢哪种语言?

  • 14

    它可能更多地是关于如何分配资源而不是语言选择 . 我读到GAE是与语言无关的,所以对于任何语言都可能没有内置优势,但是你可以通过选择你感到舒适和积极的语言来获得优势 . 我使用python和更多的部署经济高效的是升级到python 2.7,如果使用2.6的正确子集,你只能进行升级,这很好 . 因此,如果您选择一种您熟悉的语言,您可能会从使用该语言的能力而不是组合语言环境本身中获益 .

    简而言之,我推荐python,但这是我尝试的唯一的应用程序引擎语言,这是我的选择,即使我很熟悉Java,使用我喜欢的语言python,项目的代码会更加紧凑 .

    我的应用程序大小为smallmedium,它们的成本与此无关:

    enter image description here

  • 45

    我没有使用Go,但我强烈怀疑它会更快地加载和执行实例,并且纯粹因为它被编译而使用更少的内存 . 有点来自小组,我相信Python比Java更具响应性,至少在实例启动时间 .

    实例加载/启动时间非常重要,因为当您的实例受到的请求数超出其处理能力时,它会旋转另一个实例 . 这使得该请求需要更长时间,可能给人的印象是网站通常很慢 . Java和Python都必须启动他们的虚拟机/解释器,所以我希望Go在这里要快一个数量级 .

    还有一个问题 - 现在Python2.7可用,Go是唯一的单线程选项(具有讽刺意味的是,Go被设计为一种现代的多进程语言) . 因此,尽管应该更快地处理Go请求,但实例只能串行处理请求 . 如果这种限制持续很长时间,我会感到非常惊讶 .

相关问题