梁赛的博客

我的目标: 程序员里seo技术最好的,seo界里程序写的最好的!

« jsp里实现类似于asp中response.endSEO博客征SEO相关站点友情链接 »

asp,php,jsp的运行速度比较(今天亲自测试了下)

 读大学时看到书上将asp ,jsp php列为网页三剑客. 当时觉得asp很酷,建设很简单,于是努力学习asp...

 今天对asp终于很熟了,无聊想测一下这三剑客哪一个最厉害,速度最快.

大学里asp做的一些网站感觉速度很快,一点就开了,相反,毕业后工作用的J2EE架构的网站,点开要半天..老觉得jsp还不如asp.

至于php,也是跨平台的,三种语言中我最陌生的语言,同时也知道这语言是很强大的.安全性好,漏洞少.而且很多人说php比asp快很多.

那么php比起jsp,以及asp哪个快呢?靠点击网页凭直觉是感觉不出那种细微差别了。 正好我电脑上有三种语言运行的环境,亲自测试一下.

大概说下我的电脑, CPU是P4  2.4G   1G内存.winxp系统

asp的服务器是IIS6.0,jsp的服务器是Tomcat5.0 ,php服务器是php5.0(已整合到IIS里)

测试方法:将3.1415926开方300万次, 测试所花的时间。为什么是300万次呢,如果只开方一次,相信三种语言都能在瞬间完成(不到1毫秒),无法统计到所花的时间。

为减少误差, 每种语言测了三次 ,下面是测试结果:

asp   3.218  秒  3.203 秒 3.312 秒

php   0.648秒  0.661秒  0.629秒

jsp    0.062秒 0.047秒  0.063秒

真是让人大跌眼镜啊,asp运行的超慢,三秒的时间,而且浏览器还是不响应的状态,任务管理器显示CPU使用率到了100%

而jsp是最快的。。快到什么程度呢? 我把三百万次改成三千万次, 结果花的时间在0.5秒左右,比php和asp的三百万次都快,而且任务管理器里所显示的CPU占用率不到10% 。

再次加大,将jsp中的三千万次改成三亿次,这次jsp花了五秒时间,CPU显示占用率100%,至于另两种语言,还有必要试吗?也不敢试,别把CPU给计算坏了。。。哈哈

还是JAVA最强大啊。。。。至于上班做的这系统慢,主要还是运用了太多的中间件,而这些又是必要的,因为大大节省了开发成本和时间。

总的来讲,还是java最强,小小的分支jsp就这么厉害,而且我的服务器还是小猫TOMCAT,换成weblogic也许效果更好。。。

遗憾的是国内提供的虚拟主机支持jsp的真的太少了。。

真的该放弃asp了,慢还不说,漏洞也多。。微软自己的网站都不用这个了。

下面是三种语言测速度的源码:

asp(仍然是最简洁的,变量都不用声明,但是这些却是要付出代价的)

<%
stime=timer()
for i=1 to 3000000   '循环三百万次
   c=sqr(3.1415926)
next
etime=timer()
Response.write etime-stime
%>

php实现CPU计算开方的速度测试源码:
    function test_float()
    {
   
     $t = pi();
     
   $timeStart = gettimeofday();
   
     for($i = 0; $i < 3000000; $i++);
   
     {
   
          sqrt($t);
     
      }
      
  $timeEnd = gettimeofday();
  
    $time = ($timeEnd["usec"]-$timeStart["usec"])/1000000+$timeEnd["sec"]-$timeStart["sec"];
   
      $time = round($time, 3)."秒";
     
   return $time;
   
  }

 

jsp实现CPU计算速度测试的源码:

<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.lang.Math.*"%>

<%
java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("ssSSS");
java.util.Date currentTime = new java.util.Date();

String  strd= formatter.format(currentTime); 
int c=0;
double d=0;
Double  startTime=Double.valueOf(strd);

 for (int i=1; i<3000000;i++){
  d=java.lang.Math.sqrt(3.1415926);
 }

java.text.SimpleDateFormat formatter2 = new java.text.SimpleDateFormat("ssSSS"); //jsp取毫秒用SSSS,第一个S永远是0,故去掉
java.util.Date currentTime2 = new java.util.Date();
String strd2= formatter2.format(currentTime2); 
Double  endTime=Double.valueOf(strd2);
 
 
out.println(endTime-startTime); //这里得出的差值是毫秒
%>

 

 


 

发表评论:

◎ 看完了就走的人不厚道 。

日历

最新评论及回复

最近发表

Powered By liangsai.com

Copyright www.LiangSai.com All Rights Reserved. 冀ICP备07016626号 sitemap