我是一名php开发人员,但最近不得不两次编写相同的应用程序,一次是在php中,一次是在java中,我正在学校上课。为了好奇,我对两者进行了基准测试,发现如果访问数据库,java版本比php版本慢2到20倍,没有DB访问速度慢1到10倍。我看到两个直接的可能性:
我发布了我的servlet代码here。我不希望任何挑剔的抱怨或轻微的改进,但有人可以在那里看到一个可怕的明显的性能问题?或者任何人都可以解释为什么Java感觉它必须吮吸?
我总是听到人们说java比php更快,更具可扩展性,特别是我的老师,他确信它,但是提出的请求越多,java越慢。 php似乎没有受到增加的负载的影响,但保持不变。
答案 0 :(得分:5)
在成熟的Java Web应用程序中,Servlet将使用现有的JDBC连接池。建立新连接将是您及时支付的最高成本。
每次尝试获取连接时调用Class.forName
也会导致不必要的减速。
JVM调优也可能是一个因素。在企业环境中,JVM内存和可能的GC配置将进行调整和调整,以在响应性和资源利用率之间实现理想的平衡。
正如Stephen C所指出的那样,JVM也有一种“热身”的概念。
所有这一切,我不知道PHP与Java相比如何,我觉得这两种语言都提供了很好的解决方案来分离非不相交的需求。
答案 1 :(得分:1)
基于没有太多信息(做出最佳决策的地方),我的猜测是Class.forName("com.mysql.jdbc.Driver");
getConnection()
是一个很大的时间点。
当new String
可以传递给out.println时,在importFile中创建char[]
是我的挑剔。
答案 2 :(得分:0)
您的测试似乎反映了初始开销,而不是稳态性能。尝试在循环中多次执行非DB测试(以便每个测试遍历代码多次)并查看运行时和迭代次数之间的线性关系。我怀疑java的增量成本低于php的成本