加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl几个读取文件命令

发布时间:2020-12-15 20:52:44 所属栏目:大数据 来源:网络整理
导读:!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 680460288 22 0 262145 0;} @font-f

<!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 680460288 22 0 262145 0;} @font-face {font-family:"/@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 680460288 22 0 262145 0;} /* Style Definitions */ p.MsoNormal,li.MsoNormal,div.MsoNormal {mso-style-parent:""; margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋体;} @page Section1 {size:8.5in 11.0in; margin:1.0in 1.25in 1.0in 1.25in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;} div.Section1 {page:Section1;} -->



####################
方案一 while 输出 最常用

open (FILES "index");
while (){
print;
}
close(FILES);
程序占用 CPU 时间: 0.23 usr + 0.22 sys 合计运行时间 450 毫秒
#######################
方案二: 数组读取输出
open (FILES "index");
@reads=;
print @reads;


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

换为 @_;
open (FILES "index");
@_=;
print @_;
程序占用 CPU 时间: 3.64 usr + 0.11 sys 合计运行时间 3750 毫秒 节省一点时间:)

################################
方案三:

open (FILES "index");
@_=;

#print @_;
close(FILES);
foreach (@_){
print;
}

程序占用 CPU 时间: 3.79 usr + 0.15 sys 合计运行时间 3940 毫秒
很希奇,和上面相同,说明,只要打印数组,就和 foreach 处理方式相同
##############################
方案 4 不打印
open (FILES "index");
@_=;
#print @_;
close(FILES);
程序占用 CPU 时间: 3.45 usr + 0.00 sys 合计运行时间 3450 毫秒 还是相同
更奇怪,少一次循环,为什么时间还相同

#########################################
方案 6 ,用变量包办数组直接读取输出。

open (FILES "index");
$/="";
$reads=;
print $reads;
close(FILES);
$/="/n";

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

##############################################
方案 7 用分割变量来从新生成数组,包办数组 @_= 直接读取方式,循环输出
open (FILES "index");
$/="";
$reads=

close(FILES);
$/="/n";

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


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

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

假如数组不全部输出,单纯赋值占用时间很短
open (FILES "index");
$/="";
$reads=

close(FILES);
$/="/n";

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

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

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

散列
--------------------------------------------------------------------------------

open (FILES "index");
while (){$i++;
$hash{$i}=($_)
}
print %hash;

close(FILES);


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

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

散列不输出
open (FILES "index");
while (){$i++;
$hash{$i}=($_)

}
#print %hash;

close(FILES);
程序占用 CPU 时间: 0.09 usr + 0.04 sys 合计运行时间 130 毫秒 还是比数组慢

hash 中取出一个元素

open (FILES "index");
while (){$i++;
$hash{$i}=($_)
}
close(FILES);
print $hash{8900};

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

数组也是,测不出时间
open (FILES "index");
$/="";
$reads=;

close(FILES);
$/="/n";

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

print $_[8900];

程序占用 CPU 时间: 0.05 usr + 0.00 sys 合计运行时间 50 毫秒
##########################
以上测试结果有的差别很大,有的差别不大。

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

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

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

仅供参考。

附, my 测试方法
#########################
use CGI::Carp qw(fatalsToBrowser);
use Benchmark;
$TT0 = new Benchmark;
print "Content-type: text/html/n/n";
open (FILES "index");
$/="";
$reads=;

close(FILES);
$/="/n";

@_=split ( //n/$reads);
print @_;

###########################
print"";
$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 "
程序占用 CPU 时间: $2 usr + $3 sys 合计运行时间 $alltimas 毫秒 "; exit;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读