Java servlet 是取代CGI 在生成动态数据方面主导地位的有力竞争者。Servlets 没有CGI固有的最令人难以忍受的性能问题,即每次请求都需要创建并随后销毁一个进程。所有的Java servlet 可能位于一个单独的JVM 进程中,每个请求都按顺序地排列在该进程中。正是由于这个原因,人们经常说servlets 的速度比CGI 快。实际上并没有这么简单。Servlet 在一个永久进程中这一特点,比起CGI 可执行程序具有巨大的先天优势。如果您要做的只是非常简单的“Hello World”类型的应用,某些平台上servlets 的运行速度比CGI 要快10 倍。然而,真正的应用要远比“Hello World”复杂,“Hello World”常常误导我们。随着Web 应用复杂性的逐渐增加,性能问题将从Web 应用服务器管道转移至应用业务逻辑。在这种情况下,一个用C 语言编写的可执行CGI,将弥补它和Java 语言编写的servlet 之间的差距,因为C 语言比Java 快。当复杂性超过某个临界值时,CGI 的性能可能反而比相应的servlet好。这种情况极其罕见,但是我们也不能随随便便就吹嘘说servlet 比CGI 快。
前面章节中讲述的优化是为了提高Java 代码的效率。同样这些优化也可以自动应用到servlet 性能上。尤为重要的是关于String 性能的章节,因为Web 应用经常要用到String 对象。本章中我们将强调servlet 一些常见的优化方法。我们也将讲述几种典型servlet 的性能比较。
注意:在前面的章节中,我们的测量标准是响应时间,响应时间越短性能越好。对于Web 服务器来说,更加流行的标准是每秒请求数量,这是本章我们的测量方法。请牢记该标准,数值越高性能越好。 ......
|