Java和Python在GAE上哪个更好?

3

来自以下链接:

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有点麻烦,因为它需要长时间启动。 - Steven
有谎言,可恶的谎言,还有基准测试... - user177800
毕竟,事实就是事实,尽管我们可能相互引用着聪明政治家的那些词语时会笑上一笑,谎言-该死的谎言-和统计数据,但仍然有一些简单的数字是最简单的人也必须理解的,而最聪明的人也无法逃脱。 - igouy
3个回答

3

仅作简短说明 - 不要将其视为权威/全面比较:

Django和Spring都有很长的启动时间,这可能会导致请求被丢弃。我建议选择一个专门为GAE设计的框架:tipify、slim3等。


我是Tipfy的忠实粉丝。我相信在大多数Python App Engine框架比较中,它是最快的。 - Calvin

3

我在GAE上使用过Python和Java,一个项目使用了Python+Django,另一个使用了Java/Groovy+Spring。

Python+Django非常容易开发,但不易维护。它具有足够快的启动时间、良好的文档等特点。

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

Python项目存在太多错误,大多数没有任何明显的原因:(由于语言的动态性质,很难找到这些错误的原因。而且,要准备手动修补一些正在使用的库。别误解我的意思,我有很多年的Python经验,但在GAE这样的分布式系统上维护它真的很困难,代码质量也存在问题:(

Java则表现非常出色。如果你的代码有问题,你会看到所有需要修复它的信息,在几次迭代之后,你几乎可以修复所有的bug。除了一个:有时你会看到启动错误:(不过并不太频繁)

PS 顺便说一下,选择适合GAE的语言取决于你更擅长哪种语言:) 如果你还不熟悉Java-不要从它开始,需要至少1-2年的时间来理解这种语言。


2
这些基准测试比较了Python 3和Java在(可能)标准设置上的性能。这些基准测试没有指明测试什么样的工作负载。
App Engine运行Python 2.5,与标准桌面配置明显不同,因此这些基准测试并不适用。
此外,可扩展性与这类基准测试无关,它们最多只会产生恒定因素的差异。如果您的应用程序构建得足够好,它将以相同程度在任何一种语言中扩展。可扩展性取决于您如何设计应用程序并使用底层基础架构。
我建议您使用您最熟悉的语言和框架 - 不要根据基准测试选择您的语言。

(可能是)标准设置<< 你有阅读帮助页面吗?
- igouy
这些基准测试没有明确显示它们测试什么类型的工作负载。您是否阅读了网站上的其他页面? - igouy
@igouy 这完全不相关,因为我的观点仍然存在:基准测试不在App Engine上,也不在任何近似于App Engine的设置中进行,并且它们也没有使用相同版本的Python。 - Nick Johnson
当然,基准测试不在应用引擎上。但是您将支付给GAE您所消耗的CPU时间、内存等等,这些都是所有计算系统所依赖的。 - Ahmed Al-Malki
@Nick Johnson - 你猜测但并不知道这些测量值并非针对App Engine。你说“没有表明这些基准测试测试什么样的工作负载”,是完全错误的。你提出我们应该始终检查我们打算使用的系统,而不是赌它们会像其他任意机器一样运行,这一点是正确的。 - igouy
@igouy 我并没有猜错:Python 3无法在App Engine上运行,而且我知道基准测试网站也无法在App Engine上运行。 - Nick Johnson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接