无意中发现,在一台服务器上,非常简单的awk程序,比C的等价物要慢40倍,感觉有点不太正常,还以为的确是awk太慢。不得其解,到另一台服务上试了一下,相同的 awk 程序,相同的测试数据,这台服务器的速度与C相当,也就是说,同样是awk,两台机器速度差了 40 倍,而两台机器配置基本相当。非常困惑,找了两小时的原因,终于发现gawk手册
里面有一段话:
For other single-character record separators, using ‘LC_ALL=C
’
will give you much better performance when reading records. Otherwise,
gawk
has to make several function calls, per input
character
to find the record terminator.
在看两台机器的 locale,结果发现,慢的机器上:
[root@slow-server]# locale
LANG=en_US.UTF-8
LC_XXXX=en_US.UTF-8
...
LC_ALL=en_US.UTF-8
快的机器上:
[root@fast-server]# locale
LANG=en_US
LC_XXXX=en_US
...
LC_ALL= <空>
马上试验,将slow-server的locale改掉:
export LC_ALL=C
速度马上快了40倍,与fast-server相当。
这应该是awk实现上的一个缺陷,即便是对utf8,也不应该慢这么多,如果缓冲合适,最多慢2~3倍就可以了,为什么非要gawk
has to make several function calls, per input
character
?
分享到:
相关推荐
网络仿真软件ns2的一个脚本文件,分析仿真结果的代码!
Preparing to unpack .../liblwp-mediatypes-perl_6.02-1_all.deb ... Unpacking liblwp-mediatypes-perl (6.02-1) ... Selecting previously unselected package libhttp-message-perl. Preparing to unpack .../...
骏马金龙--精通awk.pdf,骏马金龙--精通awk.pdf
awkj --node版本的awk
zrp protocol in ns-2.33
3. Shell_Programming/Sed-and-Awk-101-Hacks.pdf 4. Shell_Programming/The.AWK.Programming.Language.pdf 5. Shell_Programming/Effective-AWK-Programming.pdf 6. Shell_Programming/Expert.Shell.Scripting.pdf ...
这是一个关于NS AWK的分析文件,包括一些参数的分析,例如丢包、延迟、抖动。
awk用法小结 - - - by ruson 2006.4 NTU 1. awk非常适合于结构化的文本文件(行、列数据)复杂处理。相对于sed而言,它可进行复杂的编程处理,并且可以产生复杂的报表输出。 2. awk通常有三个版本,旧awk、nawk...
09_文本过滤-AWK 介绍.PDF 10_文本过滤-sed 用法介绍.PDF 11_文本过滤-合并与分割.PDF 12_文本过滤-tr 用法.PDF 13_登录环境-登录环境.PDF 14_登录环境-环境和shell变量.PDF 15_登录环境-引号.PDF 16_基础...
eg_flag=`echo "$line" | awk '/例:$/'` # 遇见'例:'开头的行 if [ "$eg_flag" != "" ]; then ln_eg=0 fi if $is_head ; then head="$head $line" else if [ $ln_item == 0 ] ; then line="\033[32;1m\...
awk.sh for.sh ip-get.sh read.sh tmp.sh calc.sh func.sh login.sh select.sh var.sh case.sh guess_data.sh nfs_install.sh shell-base.sh while.sh data_cmp.sh homework-3.sh ping.sh shell-test.sh file_...
#ip=`ifconfig|grep "inet "|grep -v "127.0.0.1"|awk -F 'inet ' 'NR==1 {print $2}'|awk '{print $1}'|sed "s/addr://g"` 5. libst.def st_get_eventsys_name @112 st_set_eventsys @113 ibssl.a objs/...
ns2中的trace分析脚本,用于网络仿真,吞吐量,延时,抖动率的分析
$ sudo apt install -y docker-ce="$(apt-cache madison docker-ce | /bin/grep 17.03 | head -1 | awk '{print $3}')" 离线包使用方法: $ tar xf kubernetes-ubuntu-1.10.5.tar.gz $ cp -r kubernetes-ubuntu-...
.40 What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41 ChaPter 3 Basic Shell Scripting . . . . . . . . . . . . . . . . . . . . . . ...
!!!ns-2.33在windows下安装的图文教程(包含完整的安装包).pdf
ceph_log_parser.awk 使用ceph.log运行并将输出重定向到CSV ./ceph_log_parser.awk ceph.log > ceph-log-parsed.csv./ceph_log_parser.awk -v osdtree=ceph_osd_tree.txt -v timeinterval=60 -v bucketsummary=1 ...
He has been a heavy awk user since 1987, when he became involved with gawk, the GNU project's version of awk. As a member of the POSIX 1003.2 balloting group, he helped shape the POSIX standard for ...
Parameters used for traffic generation ... Else modify the awk script file analyzing the trace file, accordingly so that it can convert higher hex values to corresponding decimal values.
linux-awk.doc