`
mryufeng
  • 浏览: 968887 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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

    博客分类:
  • 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

  • tail.rar (1.8 KB)
  • 描述: tail的c和lua实现
  • 下载次数: 136
8
4
分享到:
评论
5 楼 liuming 2008-08-17  
不错,有点意思,支持一下楼主
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

文件太大了 不好附上。
3 楼 Sam1860 2008-08-11  
把/var/log/haproxy.log拷三份来测比较准吧
2 楼 mryufeng 2008-08-11  
算法基本一样, lua重复利用现有的c native 实现, c程序大概是lua程序的翻译
1 楼 makefile 2008-08-10  
你俩个算法都不一样比较啥啊?

相关推荐

    tail程序(windows)

    windows中,类似Unix下的tail,可跟踪日志文件

    LUA5.1 脚本语言 编译执行源码

    Lua从一开始就是作为一门方便嵌入(其它应用程序)并可扩展的轻量级脚本语言来设计的,因此她一直遵从着简单、小巧、可移植、快速的原则,官方实现完全采用ANSI C编写,能以C程序库的形式嵌入到宿主程序中。Lua的每个...

    tail程序及使用手册.zip

    Linux有一个tail命令可以实时输出文本文件内容 而windows却没有类似的命令 这回用这个工具可以在windows里可以使用tail命令...方法:解压缩,把tail.exe放到c:\windows\system32\目录下,就可以在命令行中使用tail命令了

    Tail for Win32

    Tail for Win32 4.2.12.1,Linux下有一个tail程序,可以用来动态显示变化中的日志文件内容,这个是基于windows的版本,本身是来源于SourceForge的开源项目。 但是默认的版本有几个缺陷,因此我修改了以下功能: 1)...

    lua 程序设计学习.doc 版

    Lua程序设计 版权声明 译序 第一篇 语言 第0章 序言 0.1 序言 0.2 Lua的使用者 0.3 Lua的相关资源 0.4 本书的体例 0.5 关于本书 0.6 感谢 第1章 起点 1.1 Chunks 1.2 全局变量 1.3 词法约定 1.4 命令行方式 第2章 ...

    模仿tail的程序

    模仿unix tail的程序,但是不提供-f功能,仅仅用作文本文件查看。 请使用VC++6.0打开,也可以使用VC++2003

    windows命令行使用的tail

    在windows的命令行中使用的tail程序,可以支持tail -f查看文件。

    文件实时监控工具Tail源码20130415

    Tail 是一种基于命令行的文件实时监控和查看器,是对 UNIX 'tail -f' 命令的Windows移植。Tail 可以快速显示大文件的末尾部分,而无需加载整个文件。并且其可以用于查看一个正在增长的文件。Tail 仅是一个文件查看...

    Lua中文教程(pdf版)

    lua中文教程,原名:programming in lua 目录 版权声明..............i 译序..i 目录iii 第一篇语言.......1 第0章序言.......1 0.1 序言..........1 0.2 Lua的使用者................2 0.3 Lua的相关资源...

    Tail Animator.unitypackage

    该资源包含两个版本:V1.3.7 与 V2.0.5。 尾部动画师是一套行为模拟程序动画与弹性尾巴运动给你许多新的功能,它将为您的模型的尾部设置关键帧动画,或者只为其设置动画,而无需在其他软件中制作动画。 Tail ...

    windows下的tail备份

    tail for Windows 是 Windows 下的 tail DOS 命令(类似 UNIX/Linux 下的相同命令)。可用来显示文件尾部内容以及跟踪/监控文件内容变化。你也可以借助重定向符号(> 或 >>)从一个文件的指定行号开始截取内容生成另...

    windows下使用tail命令-tail2win

    windows下使用tail命令-tail2win 下载之后解压到c:/windows/system32目录下 然后就可以像linux那样使用tail -f 指令

    windows cmd tail 工具

    以前在公司时服务器上面可以实现tail 命令查看程序运行日志,感觉相当不错,上网查了下这些命令是linux 下的,还好有好心人开发了一个可以在Windows下的运行的小工具,来给分享一下: 使用方法: 下载后解压,把tail...

    windows的tail

    找过好几个windows的tail工具,都有很多问题,比如手动改写一下文件,就无法再...2. 将tail.exe和被监控的文件放在同一路径下,然后<shift>+鼠标右键,启动控制台,之后像linux的tail命令一样使用:如tail -f test.log

    file-tail-gem-package

    file-tail 为rubygem所需要的一个工具,一般是用gem install file-tail下载,该file-tail适用于ruby版本为1.8.5,rubygem版本为1.2.0

    我使用过的Linux命令之tailf - 跟踪日志文件/更好的tail -f版本

    NULL 博文链接:https://codingstandards.iteye.com/blog/832760

    win 平台类似linux的tail 工具

    win 平台类似linux的tail 工具

    laravel-tail, 用于跟踪应用程序日志的工匠命令.zip

    laravel-tail, 用于跟踪应用程序日志的工匠命令 轻松跟踪你的日志 这个软件包提供了一个工匠命令来跟踪应用程序日志。 它支持你本地机器上的每日和单一日志。Spatie是比利时Antwerp的网页设计机构。 你将在我们的...

    windows tail加强版

    在原来基础上修改了下,以前用tail是只要我把文件的内容删除了一点,tail就会崩溃。读取2G以下的文件还是没有问题的。 新加的功能: 1.命令格式,默认是显示文件最后的10行,如果文件没有,则会创建 tail 文件路径 ...

Global site tag (gtag.js) - Google Analytics