zoukankan      html  css  js  c++  java
  • ASP程序运行速度测试

      1程序运行速度试验结果:
      21。作相同的分支条件判断:IF  比  SELECT慢。
      3用以下程序测试:
      4<%
      5dim tttt1,ttt2
      6session("ii")=0
      7for sn=0 to 5
      8ttt1=now()
      9for i=0 to 300000
     10   if session("ii")=0 then
     11      session("ii")=1
     12   else
     13     if session("ii")=1 then
     14      session("ii")=2
     15     else
     16       if session("ii")=2 then
     17          session("ii")=3
     18        else
     19           session("ii")=0
     20         end if
     21     end if
     22   end if
     23next
     24ttt2=now()
     25tou=ttt2-ttt1
     26Response.Write sn&""&tou*24*60*60&"<br>"
     27next
     28
     29for sn=0 to 5
     30ttt1=now()
     31for i=0 to 300000
     32   select case session("ii")
     33      case 0
     34         session("ii")=1
     35      case 1
     36         session("ii")=2
     37       case 2
     38         session("ii")=3
     39       case 3
     40         session("ii")=0
     41   end select
     42next
     43ttt2=now()
     44tou=ttt2-ttt1
     45Response.Write sn&""&tou*24*60*60&"<br>"
     46next
     47
     48%>
     492, 如果把上例中的SESSION对象改为用普通的变量存。速度会快差不多8倍
     503,进行字符串连接时往中间加入相同多的字符串,基数越大,越慢。
     51通过下面的程序测试:
     52<%
     53dim tttt1,ttt2
     54session("ii")=0
     55for sn=0 to 5
     56ttt1=now()
     57'  txt=""
     58   for i=0 to 10000
     59       txt="a"&txt
     60   next
     61ttt2=now()
     62tou=ttt2-ttt1
     63Response.Write sn&""&tou*24*60*60&"<br>"
     64next
     65%>
     66进行同样长字节的字符连接时,汉字比英文快4倍,通过下面的程序测试
     67<%
     68
     69dim tttt1,ttt2
     70for sn=0 to 5
     71ttt1=now()
     72  txt=""
     73   for i=0 to 20000
     74          txt=""&txt
     75   next
     76ttt2=now()
     77tou=ttt2-ttt1
     78Response.Write sn&""&tou*24*60*60&"<br>"
     79next
     80
     81txt=""
     82for sn=0 to 5
     83ttt1=now()
     84  txt=""
     85   for i=0 to 20000
     86          txt="aa"&txt
     87   next
     88ttt2=now()
     89tou=ttt2-ttt1
     90Response.Write sn&""&tou*24*60*60&"<br>"
     91next
     92
     93%>
     94用FOR 循环比DO  WHILE循环要快得多,用下面的程序测试,虽然FOR循环中要多一个变量,
     95<%
     96dim tttt1,ttt2
     97
     98for sn=0 to 5
     99ttt1=now()
    100  i=0
    101   do while i<=100000
    102      i=i+1
    103   loop
    104ttt2=now()
    105tou=ttt2-ttt1
    106Response.Write sn&""&tou*24*60*60&"<br>"
    107next
    108
    109for sn=0 to 5
    110ttt1=now()
    111   ii=0
    112   for i=0 to 100000
    113    ii=ii+1
    114   next
    115ttt2=now()
    116tou=ttt2-ttt1
    117Response.Write sn&""&tou*24*60*60&"<br>"
    118next
    119%>
    120定义5000个一个字符的SESSION并不比定义5000个有5000个字符串长的SESSION少花很多时间,两者时间差仅为近一倍,用一秒多钟。倒是生成这个5000个字符长的变量花了不少的时间,<%
    121dim tttt1,ttt2
    122c="a"
    123for sn=0 to 5
    124
    125session.abandon
    126ttt1=now()
    127   for i=0 to 5000
    128       session("s"&i)=c
    129    next
    130ttt2=now()
    131tou=ttt2-ttt1
    132Response.Write sn&""&tou*24*60*60&":"&session("s"&i-1)&"<br>"
    133next
    134
    135for i=0 to 5000
    136  c="a"&c
    137next
    138
    139for sn=0 to 5
    140session.abandon
    141ttt1=now()
    142   for i=0 to 5000
    143       session("s"&i)=c
    144    next
    145ttt2=now()
    146tou=ttt2-ttt1
    147Response.Write sn&""&tou*24*60*60&":"  &session("s"&i-1)&"<br>"
    148next
    149
    150
    151%>
    152
    153
    154这段程序从SN=3起就很慢,而前面非常快
    155<!--#include file="filetou.asp"-->
    156<%
    157dim tttt1,ttt2
    158for sn=0 to 5
    159ttt1=now()
    160  for i=1 to  20
    161   sql ="SELECT 名称  from user where 名称='阿余'"
    162   Set rs=Server.CreateObject("ADODB.RecordSet")                        
    163   rs.Open sql,conn,1,3
    164   rs("名称")="阿余"
    165   rs.update
    166   rs.close
    167next
    168ttt2=now()
    169tou=ttt2-ttt1
    170Response.Write sn&""&tou*24*60*60&":"&session("s"&i-1)&"<br>"
    171next
    172
    173
    174%>
    175
    176
    177而这样就快多了。看来建对象很要花些时间,还有,用MOVE 0,1 和  MOVEFIRST 相比速度没有什么差别。
    178<!--#include file="filetou.asp"-->
    179<%
    180   sql ="SELECT 名称  from user where 名称='阿余'"
    181   Set rs=Server.CreateObject("ADODB.RecordSet")                        
    182   rs.Open sql,conn,1,3
    183dim tttt1,ttt2 
    184for sn=0 to 5
    185ttt1=now()
    186  for i=1 to  700
    187   rs("名称")="阿余"
    188   rs.update
    189   rs.movefirst
    190next
    191ttt2=now()
    192tou=ttt2-ttt1
    193Response.Write sn&""&tou*24*60*60&":"&session("s"&i-1)&"<br>"
    194next
    195%>
    196
    197而这两种方式相比,后者要慢3倍,可能是后者要重新查询,但比前面的用RS建查询后又去改,改了又关,相比,要快了不知多少。
    198<!--#include file="filetou.asp"-->
    199<%
    200   sql ="SELECT 名称  from user where 名称='阿余'"
    201   Set rs=Server.CreateObject("ADODB.RecordSet")                        
    202   rs.Open sql,conn,1,3
    203dim tttt1,ttt2 
    204
    205for sn=0 to 5
    206ttt1=now()
    207  for i=1 to  700
    208   rs("名称")="阿余"
    209   rs.update
    210   rs.movefirst
    211next
    212ttt2=now()
    213tou=ttt2-ttt1
    214Response.Write sn&""&tou*24*60*60&":"&session("s"&i-1)&"<br>"
    215next
    216
    217for sn=0 to 5
    218ttt1=now()
    219  for i=1 to  700
    220     SQL="UPDATE user set 名称='阿余'  where 名称='阿余'"
    221     conn.execute sql,0,-1
    222next
    223ttt2=now()
    224tou=ttt2-ttt1
    225Response.Write sn&""&tou*24*60*60&":"&session("s"&i-1)&"<br>"
    226next
    227
    228%>
    229
    230
    231新加一万条记录谁快?第一种方法用31秒,后者直到超时仍未完成。不得已,少掉一个0,1000条是,后者慢一半。
    232<!--#include file="filetou.asp"-->
    233<%
    234   sql ="SELECT 名称  from user where id=0"
    235   Set rs=Server.CreateObject("ADODB.RecordSet")                        
    236   rs.Open sql,conn,1,3
    237dim tttt1,ttt2 
    238
    239ttt1=now()
    240  for i=1 to  10000
    241   rs.addnew
    242   rs("名称")="阿余A"
    243   rs.update
    244next
    245ttt2=now()
    246tou=ttt2-ttt1
    247Response.Write sn&""&tou*24*60*60&":"&session("s"&i-1)&"<br>"
    248
    249
    250ttt1=now()
    251  for i=1 to  10000
    252     sql=" INSERT INTO  user (名称) VALUES('阿余B')"
    253     conn.execute sql,0,-1
    254next
    255ttt2=now()
    256tou=ttt2-ttt1
    257Response.Write sn&""&tou*24*60*60&":"&session("s"&i-1)&"<br>"
    258
    259
    260%>
    261
    262下面的程序结果说明RS新增记录较快,而删除较慢,用CONN新增慢,但删除很快。
    263运行的结果为:
    2643.00000007264316:
    2657.99999998416752:
    2661.99999983888119:
    2670:
    268后来用RS新增记录5000条,并用CONN删除这5000条, 结果为:
    26917.000000202097:
    2701.00000023376197:
    271程序为:
    272<!--#include file="filetou.asp"-->
    273<%
    274dim tttt1,ttt2 
    275ttt1=now()
    276sql ="SELECT 名称  from user where id=0"
    277   Set rs=Server.CreateObject("ADODB.RecordSet")                        
    278   rs.Open sql,conn,1,3
    279  for i=1 to  1000
    280   rs.addnew
    281   rs("名称")="阿余A"
    282   rs.update
    283next
    284ttt2=now()
    285tou=ttt2-ttt1
    286Response.Write sn&""&tou*24*60*60&":"&session("s"&i-1)&"<br>"
    287
    288
    289ttt1=now()
    290  for i=1 to  1000
    291     sql=" INSERT INTO  user (名称) VALUES('阿余B')"
    292     conn.execute sql,0,-1
    293next
    294ttt2=now()
    295tou=ttt2-ttt1
    296Response.Write sn&""&tou*24*60*60&":"&session("s"&i-1)&"<br>"
    297
    298
    299
    300
    301ttt1=now()
    302   sql ="SELECT  名称 from user where 名称='阿余A'"
    303   Set rs=Server.CreateObject("ADODB.RecordSet")                        
    304   rs.Open sql,conn,1,3
    305do while not rs.eof
    306   rs.delete
    307   rs.update
    308   rs.move 0,1
    309  loop
    310ttt2=now()
    311tou=ttt2-ttt1
    312Response.Write sn&""&tou*24*60*60&":"&session("s"&i-1)&"<br>"
    313
    314
    315ttt1=now()
    316   sql ="delete from user  where 名称='阿余B'"
    317    conn.execute sql,0,-1
    318ttt2=now()
    319tou=ttt2-ttt1
    320Response.Write sn&""&tou*24*60*60&":"&session("s"&i-1)&"<br>"
    321%> 
  • 相关阅读:
    windows修复移动硬盘文件夹打不来的问题
    secureCRT设置
    core dump配置
    ssh免密登陆的问题解决
    crontab的环境变量
    tmux配置
    shell的技巧笔记
    记一次route配置不起作用的问题解决过程
    crontab笔记
    Python中的一个诡异编码问题的追踪
  • 原文地址:https://www.cnblogs.com/Dicky/p/172791.html
Copyright © 2011-2022 走看看