【问题标题】:java vs python for GAE [closed]用于 GAE 的 java vs python [关闭]
【发布时间】:2011-02-27 21:20:19
【问题描述】:

来自这些链接:-

http://shootout.alioth.debian.org/u64q/benchmark.php?test=all&lang=python3&lang2=java    
http://shootout.alioth.debian.org/u32q/benchmark.php?test=all&lang=python3&lang2=java
http://shootout.alioth.debian.org/u64/benchmark.php?test=all&lang=python3&lang2=java 
http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=python3&lang2=java

他们清楚地表明,如果我们正在寻找可扩展的特性,那么 GAE 的最佳选择是 java。

我的问题是,如果我们使用其中一种框架,会对性能产生什么影响?

例如

 django     --> python
 spring MVC --> java
 slim3      --> java
 ... etc

【问题讨论】:

  • 除非您有保持活动,否则您的应用会在一段时间内没有活动时进入睡眠状态。这让 spring mvc 有点麻烦,因为它需要很长时间的启动。
  • 有谎言,该死的谎言和基准......
  • “毕竟,事实就是事实,尽管我们可能会轻笑着引用智者政治家的话,谎言——该死的谎言—— -还有统计数据,还有some easy figures the simplest must understand, and the astutest cannot wriggle out of。”伦纳德·亨利·考特尼,1895 年

标签: java python performance google-app-engine web-frameworks


【解决方案1】:

只是一个简短的说明 - 不要将其视为明确/全面的比较:

Django 和 Spring 的启动时间都很长,这会导致请求被丢弃。我会使用专门为 GAE 制作的框架:tipify、slim3 等。

【讨论】:

  • 我是 Tipfy 的忠实粉丝。我相信它在大多数 Python App Engine 框架比较中是最快的。
【解决方案2】:

我在 GAE 上同时使用 Python 和 Java,一个项目使用 Python+Django 完成,一个项目使用 Java/Groovy+Spring。

Python+Django 最初很容易开发,但维护起来并不容易。它有足够快的启动时间,良好的文档,atc。

Java+Spring 需要更多的开发(有些部分比使用 django 多 2-3 倍),启动时间有问题(即使你使用warmup 请求)。但它稳定得多。

Python 项目有太多错误,主要是没有任何可见的(对您而言)原因 :( 由于 lang 的动态特性,很难找到导致此错误的原因。另外,准备好手动修补您的一些库'正在使用。不要误会我的意思,我有多年的Python经验,但是在GAE这样的分布式系统上维护它真的很难,而且它的代码质量确实存在问题:(

另一方面,Java 运行良好。万一您的代码出现问题,您将看到修复此问题所需的所有信息,并且经过几次迭代,您将修复几乎所有错误。除了一个:有时你会看到启动错误:(不太常见,顺便说一句

顺便说一句,为 GAE 选择正确的语言取决于您更了解哪种语言 :) 如果您还不了解 Java - 不要从它开始,至少需要 1-2 年才能理解语言。

【讨论】:

    【解决方案3】:

    这些基准测试在(大概)标准设置上比较了 Python 3 和 Java。也没有迹象表明这些基准测试了什么样的工作负载。

    App Engine 运行 Python 2.5,其配置与您在标准桌面上发现的配置截然不同,因此基准测试确实不适用。

    此外,可扩展性与此类基准无关 - 它们至多会产生恒定的因素差异。如果您的应用程序是为扩展而构建的,那么它将在任何一种语言中扩展至相同的程度。可扩展性取决于您构建应用程序和使用底层基础架构的程度。

    我建议使用您最熟悉的任何语言和框架 - 不要根据基准选择您的语言。

    【讨论】:

    • >>(大概)标准设置
    • >>没有表明这些基准测试了什么样的工作负载
    • @igouy 这真的完全无关紧要,因为我的观点仍然存在:基准测试不在 App Engine 上,也不在任何接近 App Engine 的设置上,而且他们没有使用相同版本的 Python,要么。
    • 当然,基准测试不在应用引擎上。但是您将向 GAE 支付所有计算系统所依赖的 CPU 时间、内存等消耗的费用。
    • @Nick Johnson - 您猜到了,但不知道这些测量值不适用于 App Engine。你说的完全错误 - “没有迹象表明这些基准测试了什么样的工作量”。您的建议是正确的,我们应该始终检查我们打算使用的系统 - 而不是赌它们会像其他任意机器一样运行。
    猜你喜欢
    • 1970-01-01
    • 2012-03-04
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-05
    相关资源
    最近更新 更多