Java与Python在GAE中的比较
从这些链接来看:
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 个回答
这些基准测试比较了Python 3和Java在一个(可能是)标准环境下的表现。不过,这里并没有说明这些测试是用来测什么样的工作负载的。
而且,App Engine上运行的是Python 2.5,它的配置和你在普通电脑上看到的完全不同,所以这些基准测试其实并不适用。
另外,扩展性并不是靠这种基准测试来衡量的——这些测试最多只会有一个固定的差别。如果你的应用程序设计得能扩展,那么无论用哪种语言,它都能达到同样的扩展效果。扩展性取决于你如何设计你的应用和使用底层的基础设施。
我建议你使用自己最熟悉的语言和框架——不要根据基准测试来选择你的编程语言。
我在谷歌应用引擎(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年的时间才能理解这门语言。
简单说一下,不要把这当成一个全面的比较:
Django和Spring这两个框架启动的时间都比较长,这可能会导致一些请求被丢掉。我建议选择那些专门为GAE(谷歌应用引擎)设计的框架,比如tipify、slim3等等。