LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2141|回复: 10

在freebsd6.0中awk的运行速度为什么比debian gnu/linux 3.1 sarge 慢几十倍?

[复制链接]
发表于 2005-11-26 21:33:24 | 显示全部楼层 |阅读模式
机器型号:IBM T20 标配
操作系统:win2000 8.8G ntfs
Debian Gnu/linux sarge 3.1 1G ReiserFS文件系统
freebsd 6.0 1G 文件系统为默认的那个
其他为fat32分区

安装分别都是最小化安装,内核也没有经过优化.

对比1:拷贝90M的文件(两种方式,一种是从fat32分区拷贝到/home/an/data目录,一种是从/home/an/data拷贝到/var/data)
freebsd debian 时间
43妙 24秒
对比2:计算数据,主要使用awk处理文本文件
先说结果:debian 处理的速度是freebsd的80倍左右
我处理82个数据文件,debian 用了1分20秒左右,而
freebsd1个文件就要1分20秒左右,我只让它处理了3个
就强行退出拉,我实在是忍受不了它拉!太慢拉!!!

请各位大侠给我解释一下这是为什么,不是一直在说freebsd如何优秀么???比linux 如何的好!!! 这是为什么????

附上我的文件供大家测试!!最好有个高人能解释一下这是为什么?
当然我用的数据文件是比较大的不是一般很小的文!
文件:h51-04.sh 内容如下:
#!/bin/bash

DISTHLJ="/mnt/hda2/data04";
LIST="/var/tmp/listhlj";
RESULTHLJ="/var/tmp/resulthlj";
LATER="/mnt/hda2/src02/aftert~1.awk";
TMP="/home/an/result";
cd $DISTHLJ;

find *.* >$LIST
rm $TMP/T5/*.dat;
for i in $(cat ${LIST}) ;do
echo `basename $i ".dat"` ;
echo `basename $i ".dat"` >$TMP/T5/$i;
awk -f $LATER $i >> $TMP/T5/$i;
done


文件2:aftert~1.awk 这个就是awk的脚本文件内容,其中两个数组记录长度都是19724 ,内容为

BEGIN{
sum[1]="19510101";
sum[2]="19510102";
sum[3]="19510103";
sum[4]="19510104";
sum[5]="19510105";
sum[6]="19510106";
sum[7]="19510107";
sum[8]="19510108";
sum[9]="19510109";
sum[10]="19510110";
#在这里省略中间部分
#长度为19724
。。。。
sum[19717]="20041224";
sum[19718]="20041225";
sum[19719]="20041226";
sum[19720]="20041227";
sum[19721]="20041228";
sum[19722]="20041229";
sum[19723]="20041230";
sum[19724]="20041231";

num[19510101]="999";
num[19510102]="999";
num[19510103]="999";
num[19510104]="999";
num[19510105]="999";
num[19510106]="999";
num[19510107]="999";
num[19510108]="999";
num[19510109]="999";
num[19510110]="999";
num[19510111]="999";
num[19510112]="999";
#这个长度也是19724
#中间也省略
num[20041227]="999";
num[20041228]="999";
num[20041229]="999";
num[20041230]="999";
num[20041231]="999";
}
{
if($6>=30000&&$6<31000){
$6=$6-30000;
}
if($6>=31000&&$6<32000){
$6=$6-31000;
}
if($6>=32000&&$6<32700){
$6=$6-32000;
}
if($6==32700){
$6=0.0;
}
if($5==32766)$5="999";
if($3<=9)$3="0"$3;
if($2<=9)$2="0"$2;
# printf("%s\t%s\t%s\n",$5,$6,num[$1$2$3]);
num[$1$2$3]=$5;
}
END{
for(i=1;i<19725;i++)
printf("%s\n",num[sum]);
}

文件3:为要处理的数据其长度为19724
内容为:
1959 1 1 N -341 0 -3.76 -12.88 13.42 -5.79 -6.42 -12.21
1959 1 2 NE -358 0 -5.92 -8.25 10.15 -1.30 2.76 1.46
1959 1 3 N -278 0 -4.17 -16.90 17.41 0.17 13.53 13.69
1959 1 4 N -235 0 -1.92 -14.99 15.11 1.85 3.22 5.07
1959 1 5 N -266 0 -1.46 -9.25 9.37 1.73 -4.40 -2.67
1959 1 6 N -309 0 -2.03 -7.88 8.14 4.69 -3.41 1.28
1959 1 7 A -354 0 -0.06 -5.20 5.20 -3.44 -8.19 -11.63
1959 1 8 C -358 2 -2.90 -2.24 3.66 9.93 9.03 18.97
1959 1 9 N -348 0 -3.30 -14.26 14.64 3.96 7.28 11.24
1959 1 10 N -364 0 0.70 -3.66 3.73 6.72 -5.24 1.48
1959 1 11 C -394 0 -1.74 -4.27 4.61 10.58 0.61 11.19
1959 1 12 CN -304 0 -1.51 -4.46 4.71 4.54 3.93 8.47
1959 1 13 E -392 0 -2.04 0.25 2.05 8.12 -9.03 -0.91
1959 1 14 C -409 0 -6.84 4.67 8.28 20.74 13.76 34.50
1959 1 15 CNE -374 0 -10.36 -21.55 23.91 20.95 17.13 38.07
1959 1 16 N -339 0 -8.86 -25.59 27.08 7.34 -3.26 4.08
1959 1 17 N -254 0 -1.41 -16.62 16.68 -1.93 -7.11 -9.05
1959 1 18 N -212 0 4.28 -12.48 13.19 -3.65 -2.90 -6.55
1959 1 19 CNW -191 0 7.15 -6.44 9.62 7.37 3.50 10.87
1959 1 20 N -228 0 -2.81 -12.66 12.97 -2.18 2.85 0.67
1959 1 21 W -248 13 6.71 -2.30 7.09 -1.76 3.93 2.16

#其他省略

如果那位大侠有兴趣作这个,我给发Email:anxiaocun@gmail.com 我把这三个文件传过去!!

小结:原打算用freebsd来处理我的数据的,可是现在看是不可以拉!!!唉!!!
发表于 2005-11-29 09:43:55 | 显示全部楼层
唉……谁知道呢,偶也想知道。有些时候系统总是让人不能尽如人意。
不过awk应该是FreeBSD自己开发的,谁知道他们干了些什么。
回复 支持 反对

使用道具 举报

发表于 2005-12-1 09:43:26 | 显示全部楼层
不应该差距这么大罢。。可能freebsd awk和debian gawk有不同参数和用法?
回复 支持 反对

使用道具 举报

发表于 2005-12-3 12:11:12 | 显示全部楼层
请安装port:lang/gawk后用/usr/local/bin/gawk再作比较吧。

系统的比较可不是由一两个软件便可分出胜负的。
回复 支持 反对

使用道具 举报

发表于 2005-12-28 09:41:04 | 显示全部楼层
第一个问题我到是知道,就是fb的fat模块写的很不咋地,致使fat32分区io能力严重受损,而它自己的ufs io能力还是很不错的。
linux下fat32的io跟win的不相上下,甚至有得时候由于linux的大磁盘缓存,要比win还要快。
回复 支持 反对

使用道具 举报

发表于 2005-12-28 09:42:57 | 显示全部楼层
第二个问题,我想同样可能是fat io的问题。如果用fat,就别用fb了,linux这方面要好的多。
选择更合适的系统,呵呵个人之见。
回复 支持 反对

使用道具 举报

发表于 2006-1-5 23:48:43 | 显示全部楼层
我觉得不是fat写的不好原因。可能是底层硬件的原因的。
fb对笔记本硬盘支持很不好,这是我的感觉。

我同学的台机,和我本子(T42)配置差不多,但是明显程序(firefox等)程序快。
我测试了一下,ufs->ufs,拷贝iso600多M的文件,我同学的台试机传输率40M/s,而笔记本只有18M/s.

差距太大了
回复 支持 反对

使用道具 举报

发表于 2006-1-6 10:25:27 | 显示全部楼层
笔记本硬盘本来就比台式机硬盘差。。你的本盘不会是7200的吧?多少兆缓存啊?
回复 支持 反对

使用道具 举报

发表于 2006-1-6 13:44:28 | 显示全部楼层
5400rpm
8M缓存。
其实用fb别的都比win快感觉,就是这个硬盘,太慢了。win的硬盘驱动的不错感觉。
回复 支持 反对

使用道具 举报

发表于 2006-1-6 18:13:32 | 显示全部楼层
你在 freebsd 下访问win分区,当然慢咯。访问ufs,很爽的阿。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表