首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

tail程序 c版本跟lua版本大比拼

2012-11-01 
tail程序 c版本和lua版本大比拼闲来的时候做了个tail 程序,和*nix下的tail功能一样Usage: ./tail -n nnnn

tail程序 c版本和lua版本大比拼
闲来的时候做了个tail 程序,和*nix下的tail功能一样
Usage: ./tail -n nnnn filename

lua版本代码 20行, c版本代码173行,开发速度大概差5倍。

代码效率:
time tail -n 1000000 /var/log/haproxy.log >/dev/null 从log文件尾巴中抽取1000000行。

1.linux 版本的tail:
real    0m0.330s
user    0m0.172s
sys     0m0.156s

2. c版本的tail:
real    0m0.398s
user    0m0.156s
sys     0m0.244s

3. lua版本的tail:

real    0m40.263s
user    0m37.082s
sys     0m2.248s
速度相差将近100倍。

总结:c 还是快好多,但是开发速度太慢,排错困难,而且需要大量的技巧。
lua开发速度快,性能也足够满足一般的需要了。

这个小程序很有意思, 源码见附件,欢迎大家挑战linux下的tail性能,我花了一个晚上优化还是比它慢20-30%。

gcc编译参数:

gcc -fomit-frame-pointer -O3 -march=i686 -Waggregate-return -Wcast-align -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wshadow -Wwrite-strings -Wcast-qual -o tail tail.c

1 楼 makefile 2008-08-10   你俩个算法都不一样比较啥啊?
2 楼 mryufeng 2008-08-11   算法基本一样, lua重复利用现有的c native 实现, c程序大概是lua程序的翻译 3 楼 Sam1860 2008-08-11   把/var/log/haproxy.log拷三份来测比较准吧 4 楼 mryufeng 2008-08-12   [root@test98 haproxy]# ls -lh /var/log/haproxy.log
-rw------- 1 root root 1.2G Aug 12 10:43 /var/log/haproxy.log

[root@test98 ~]# wc  -l /var/log/haproxy.log
8509062 /var/log/haproxy.log

[root@test98 ~]# ls -lh out.dat
-rw-r--r-- 1 root root 158M Jul 28 12:58 out.dat

[root@test98 ~]# wc out.dat -l
3837481 out.dat

文件太大了 不好附上。 5 楼 liuming 2008-08-17   不错,有点意思,支持一下楼主

热点排行