Java与Python在GAE中的比较

3 投票
3 回答
1738 浏览
提问于 2025-04-16 12:38

从这些链接来看:

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

3 个回答

2

这些基准测试比较了Python 3和Java在一个(可能是)标准环境下的表现。不过,这里并没有说明这些测试是用来测什么样的工作负载的。

而且,App Engine上运行的是Python 2.5,它的配置和你在普通电脑上看到的完全不同,所以这些基准测试其实并不适用。

另外,扩展性并不是靠这种基准测试来衡量的——这些测试最多只会有一个固定的差别。如果你的应用程序设计得能扩展,那么无论用哪种语言,它都能达到同样的扩展效果。扩展性取决于你如何设计你的应用和使用底层的基础设施。

我建议你使用自己最熟悉的语言和框架——不要根据基准测试来选择你的编程语言。

3

我在谷歌应用引擎(GAE)上用过Python和Java,做过一个用Python+Django的项目,还有一个用Java/Groovy+Spring的项目。

用Python+Django开发起来很简单,刚开始的时候特别容易,但后期维护就没那么简单了。它的启动速度还不错,文档也很好。

而Java+Spring开发起来就需要更多的工作(有些地方的开发时间是用Django的2-3倍),启动时间也有点问题(即使你使用了warmup请求)。不过,它的稳定性要好很多。

Python项目经常出错,很多时候你根本不知道为什么会出错 :( 而且因为Python是动态语言,找出错误的原因特别困难。而且,你还得准备手动修补一些你用的库。别误会,我有很多年的Python经验,但在像GAE这样分布式的系统上维护它真的很难,代码质量也有问题 :(

而Java则表现得很好。如果你的代码有问题,你会看到所有需要的信息来修复它,经过几次迭代,你几乎可以修复所有的bug。除了一个问题:有时候你会看到启动错误 :( 不过这并不是很频繁。

顺便说一下,选择适合GAE的语言主要看你最熟悉哪种语言 :) 如果你还不懂Java,那就别从它开始,因为你至少需要1-2年的时间才能理解这门语言。

3

简单说一下,不要把这当成一个全面的比较:

Django和Spring这两个框架启动的时间都比较长,这可能会导致一些请求被丢掉。我建议选择那些专门为GAE(谷歌应用引擎)设计的框架,比如tipify、slim3等等。

撰写回答