我是一个php开发人员,但最近我不得不为我在学校上的一门课编写两次相同的应用程序,一次用php编写,一次用java编写。出于好奇,我对这两个版本做了一个基准测试,发现如果访问数据库,java版本比php版本慢2到20倍,如果没有DB访问,java版本比php版本慢1到10倍。我看到两个直接可能的可能性:
我发布了servlet代码这里。我不想要任何挑剔的抱怨或小的改进,但是有人能看到一个可怕的明显的性能问题吗?或者,有人能解释为什么Java觉得它必须糟糕吗?
我经常听到人们说java比php更快、更可伸缩,特别是我的老师,他相信它,但是提出的请求越多,java得到的越慢。php似乎不受负载增加的影响,但保持不变。
发布于 2011-02-11 21:40:01
在成熟的Java应用程序中,Servlet将使用现有的JDBC连接池。建立一个新的连接将是迄今为止你所付出的最大代价。
每次尝试连接时调用Class.forName
也会导致不必要的减速。
JVM优化也可能是一个因素。在企业环境中,JVM、内存以及可能的GC配置将进行调整和调优,以在响应性和资源利用率之间实现理想的平衡。
正如Stephen所指出的,JVM也有一种“热身”的概念。
尽管如此,我不知道PHP如何与Java相比较,我觉得这两种语言都为分离不相交的需求提供了很好的解决方案。
发布于 2011-02-11 20:58:29
基于不多的信息(做出最佳决策的地方),我猜Class.forName("com.mysql.jdbc.Driver");
in getConnection()
是一个大的时间链接。
当new String
可以传递给out.println时,在importFile中创建char[]
是我的挑剔之处。
发布于 2011-02-11 20:43:51
您的测试似乎反映了初始开销比稳态性能更高。尝试在一个循环中多次执行非DB测试(这样每个测试都会多次运行代码),并查看运行时与迭代次数之间的线性关系。我怀疑java的增量成本低于php。
https://stackoverflow.com/questions/4976295
复制