返回列表 回复 发帖

[转帖]行方式读与数组方式读之比较

先看看这个再看看下面的:
http://com2008.51.net/cgi-bin/bbs/cgi-bin/topic.cgi?forum=23&topic=25&show=0
测试数据:list.cgi,大约8000行,文件大小:500KB
测试程序1是采用了行方式读,而测试程序2是采用了数组方式读。
测试程序1:test1.cgi
#!/usr/bin/perl
use CGI;
use Benchmark;  
$TT0 = new Benchmark;  
print "Content-type: text/html\n\n";
$/="";
open (FILES, "list.cgi");
$reads=<FILES>;
close(FILES);
$/="\n";

@reads=split ( /\n/,$reads);  
foreach (@reads){  
print $_;  
}

###########################
print"<hr>";
$TT1 = new Benchmark;  
$td = Benchmark::timediff($TT1, $TT0);  
$td = Benchmark::timestr($td);  
$td =~ /(\d+)\s*wallclock secs \(\s*?(\d*?\.\d*?)\s*usr\s*\+\s*(\d*?\.\d*?)\s*sys/i;  
my $alltimas=($2+$3)*1000;  
print "<center><font color=$cpudispcolor>程序占用 CPU 时间:$2 usr + $3 sys 合计运行时间 $alltimas 毫秒";  

exit;

测试程序2:
#!/usr/bin/perl
use CGI;
use Benchmark;  
$TT0 = new Benchmark;  
print "Content-type: text/html\n\n";
open (FILES, "list.cgi");  
@reads=<FILES>;  
close(FILES);
foreach (@reads){  
print $_;  
}

###########################
print"<hr>";
$TT1 = new Benchmark;  
$td = Benchmark::timediff($TT1, $TT0);  
$td = Benchmark::timestr($td);  
$td =~ /(\d+)\s*wallclock secs \(\s*?(\d*?\.\d*?)\s*usr\s*\+\s*(\d*?\.\d*?)\s*sys/i;  
my $alltimas=($2+$3)*1000;  
print "<center><font color=$cpudispcolor>程序占用 CPU 时间:$2 usr + $3 sys 合计运行时间 $alltimas 毫秒";  

exit;


                     我是一个呼吸着现在的空气而生活在过去的人
               这样的注定孤独,孤独的身处闹市却犹如置身于荒漠
                                     我已习惯了孤独,爱上孤独
                                 他让我看清了自我,还原了自我
                             让我再静静的沉思中得到快乐和满足
                                   再孤独的世界里我一遍又一遍
                                   不厌其烦的改写着自己的过去
                                             延伸到现在与未来
                                       然而那只是泡沫般的美梦
                                 产生的时刻又伴随着破灭的到来
                         在灰飞烟灭的瞬间我看到的是过程的美丽
                                      而不是结果的悲哀。。。
返回列表