您的位置:首页 > 其它

Catalyst 6509交换机配置方案

2007-06-27 10:24 501 查看
因为文件行数少了测试不出来效果,我特意做了包含整1万行的数据,大小170K

本机雷鸟1.1GHZ,内存256兆,IIS5.0 perliisdll环境

####################

方案一 while 输出 最常用

open (FILES, "index");

while (){

print;

}

close(FILES);

程序占用 CPU 时间:0.23 usr + 0.22 sys 合计运行时间 450 毫秒 n

#######################

方案二: 数组读取输出

open (FILES, "index");

@reads=<FILES>;

print @reads;

程序占用 CPU 时间:4.18 usr + 0.09 sys 合计运行时间 4270 毫秒 这个方法也常用,但效率最低

换为@_;

open (FILES, "index");

@_=<FILES>;

print @_;

程序占用 CPU 时间:3.64 usr + 0.11 sys 合计运行时间 3750 毫秒 节省一点时间:)

################################ LC<Nw

方案三:

open (FILES, "index");

@_=<FILES>;

#print @_;

close(FILES);

foreach (@_){

print;

}

程序占用 CPU 时间:3.79 usr + 0.15 sys 合计运行时间 3940 毫秒

很奇怪,和上面相同,说明,只要打印数组,就和foreach处理方式相同

############################## r

方案4 不打印

open (FILES, "index");

@_=<FILES>;

#print @_;

close(FILES);

程序占用 CPU 时间:3.45 usr + 0.00 sys 合计运行时间 3450 毫秒 还是相同 7

更奇怪,少一次循环,为什么时间还相同

#########################################

方案6,用变量代替数组直接读取输出。

open (FILES, "index");

$/="";

$reads=<FILES>;

print $reads;

close(FILES);

$/="\n";

程序占用 CPU 时间:0.04 usr + 0.00 sys 合计运行时间 40 毫秒 真快丫

##############################################

方案7 用分割变量来从新生成数组,代替数组@_=<FILES> 直接读取方式,循环输出

open (FILES, "index");

$/="";

$reads=<FILES>

close(FILES);

$/="\n";

@_=split ( /\n/,$reads);

foreach (@_){

print $_;

}

程序占用 CPU 时间:0.34 usr + 0.11 sys 合计运行时间 450 毫秒

有趣,比普通@_=<FILES> 直接读的方法要快10倍,但很是不解

如果数组不全部输出,单纯赋值占用时间很短

open (FILES, "index");

$/="";

$reads=<FILES>

close(FILES);

$/="\n";

@_=split ( /\n/,$reads);

程序占用 CPU 时间:0.05 usr + 0.00 sys 合计运行时间 50 毫秒

###############################################

散列 X

=$

-------------------------------------------------------------------------------- a*rS;

open (FILES, "index");

while (<FILES>){$i++;

$hash{$i}=($_)

}

print %hash;

close(FILES);

程序占用 CPU 时间:0.66 usr + 0.41 sys 合计运行时间 1070 毫秒

数组的最快方式是450毫秒,散列全部输出时间大概比数组慢一倍 |"

散列不输出TV7[

open (FILES, "index");

while (<FILES>){$i++;

$hash{$i}=($_)

}

#print %hash;

close(FILES);

程序占用 CPU 时间:0.09 usr + 0.04 sys 合计运行时间 130 毫秒 还是比数组慢*-

从hash中取出一个元素

open (FILES, "index");

while (<FILES>)

$hash{$i}=($_)

}

close(FILES);

print $hash{8900};

程序占用 CPU 时间:0.13 usr + 0.00 sys 合计运行时间 130 毫秒 几乎不增加时间

数组也是,测不出时间

open (FILES, "index");

$/="";

$reads=<FILES>;

close(FILES);

$/="\n";

@_=split ( /\n/,$reads);

print $_[8900];

程序占用 CPU 时间:0.05 usr + 0.00 sys 合计运行时间 50 毫秒

########################## (u

以上测试结果有的差别很大,有的差别不大

即使有些差别虽然是细微的,程序中如果把这些命令都采用最优化方式,相信会有效果的

我最近在把我的论坛调用比较频繁的核心代码进行逐行检查,反复测试优化中

谁把其他的方法都测试以下,拿出来给爱好者继续分享,我也继续测试中,今晚测试系统级IO命令,看有没有差别

仅供参考。

附,my测试方法

#########################st>

use CGI::Carp qw(fatalsToBrowser);

use Benchmark;

$TT0 = new Benchmark;

print "Content-type: text/html\n\n";

open (FILES, "index");

$/="";

$reads=<FILES>;

close(FILES);

$/="\n";

@_=split ( /\n/,$reads);

print @_;

###########################YK

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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: