Servlet 检索文件为何 比 php慢这么多

Servlet 检索文件为什么 比 php慢这么多
用JDK7的Fils写了一个历遍目录文件的servlet, 利用ajax调用检索出2000个文件,并且显示出所有的文件属性,居然花了6秒多!

而今天用PHP写了一个相同功能,才用100多毫米,怎么差这么远啊?!不是都说JAVA WEB比PHP快吗?

JAVAWEB(Tomcat7)
PHP (apache2)
Linux (ubuntu 12.04)

有这方面经验的同学能告诉一下原因吗?还是想用servlet啦。谢谢

------解决方案--------------------
servlet第一次启动会很慢,后面就快了

而且java的强项又不是快
------解决方案--------------------
java web比PHP快,一般是指大数据与大并发方面吧

------解决方案--------------------
各有各的利弊吧。
------解决方案--------------------
引用:
Quote: 引用:

servlet第一次启动会很慢,后面就快了

而且java的强项又不是快


我的试验结果是:servlet第一次会稍为慢点,但第二次也不会快很多,相差1秒左右吧。但问题是PHP一进去就很快,这是为什么呢?难道php有缓冲,而java没有? 有什么办法把servlet的速度提高吗?我服务器基本的功能就是读文件,操作文件,还有就是操作MYSQL,读数,写数等。

请大家给点意见,是用PHP还是servlet呢?谢谢!


这个就是两种语言的差别了
java是编译型语言,需要编译的,然后执行
而php不需要编译,所以省了一步
其他的就还有一些内部的机制问题了
java除了功能强大之外,还有一个比较出名,就是慢!
------解决方案--------------------
引用:
Quote: 引用:

servlet第一次启动会很慢,后面就快了

而且java的强项又不是快


我的试验结果是:servlet第一次会稍为慢点,但第二次也不会快很多,相差1秒左右吧。但问题是PHP一进去就很快,这是为什么呢?难道php有缓冲,而java没有? 有什么办法把servlet的速度提高吗?我服务器基本的功能就是读文件,操作文件,还有就是操作MYSQL,读数,写数等。

请大家给点意见,是用PHP还是servlet呢?谢谢!


那你要考虑了,如果是并发多的话,考虑安全稳定的话,建议servlet
如果就是要快,那就PHP吧
------解决方案--------------------
你把servlet里的代码放到jsp页面里试试。虽然不一定有什么用,但是也可以看看执行效率怎么样
------解决方案--------------------
代码贴出来看看?我还没见过遍历要遍历6秒的
------解决方案--------------------


public static int total = 0;

public static StringBuffer file_str = new StringBuffer();

public static void main(String[] args) throws FileNotFoundException {
long startTime = System.currentTimeMillis(); // 获取开始时间

listFile(new File("D:\\Cygwin"));

// System.out.println(file_str);

long endTime = System.currentTimeMillis(); // 获取结束时间

System.out.println("程序运行时间: " + (endTime - startTime) + "ms" + ",共计 " + total + " 个文件。");
}

public static void listFile(File file) {
if (file == null 
------解决方案--------------------
 !file.exists()) {
return;
}

if (file.isDirectory()) {
File[] children = file.listFiles();

if (children != null && children.length > 0) {
for (File child : children) {
listFile(child);
}
}
} else {

}

total++;
}


程序运行时间: 668ms,共计 7155 个文件。


试试这段代码,字符串拼接最好不要用+,用StringBuffer来做会好点,我没装jdk7,你的方法里的有些属性没法测试