- 论坛徽章:
- 0
|
walkerxk@www:~$ cat a.sh
#!/bin/bash
N=1000
for ((I=1;I<$N;I++))
do
J=$(echo $N/10|bc)
if [ $(expr $I % $J) -eq 0 ]
then
echo $I >sh.log
fi
done
walkerxk@www:~$ cat a.pl
#!/usr/bin/perl
$n=1000;
open($f,">pl.log");
for ($i=1;$i<$n;$i++)
{
$j=$n/10;
if (0==$i%$j)
{
print $f $i."\n";
}
}
walkerxk@www:~$ time ./a.pl
real 0m0.008s
user 0m0.004s
sys 0m0.004s
walkerxk@www:~$ time ./a.sh
real 0m11.770s
user 0m3.304s
sys 0m5.664s
walkerxk@www:~$
两千多倍,谁能告诉我为什么?
如果我把if条件注释掉:
walkerxk@www:~$ time ./a.pl
real 0m0.069s
user 0m0.004s
sys 0m0.004s
walkerxk@www:~$ time ./a.sh
real 0m23.459s
user 0m1.684s
sys 0m3.808s
perl增加的时间应该是用在写文件上了,如过我重新执行a.pl,时间会变成:
walkerxk@www:~$ time ./a.pl
real 0m0.009s
user 0m0.000s
sys 0m0.008s
walkerxk@www:~$ time ./a.pl
real 0m0.009s
user 0m0.000s
sys 0m0.004s
walkerxk@www:~$ |
|