Che Dong posted a photo:
DBANotes推荐: 精品
www.dbanotes.net/mylife/fifa_2006_joga_bonito_joga_compan...
安装在这里:
www.joga.com/JogaCompanion.aspx
今天在桑椹那里看到了一留言, 在一篇说spam的帖子下面。 帖子大概是这样。
根据 dashboard 里面的统计,桑林志总共有 4,101 个留言与引用,而写这个帖子的时候最新一个留言的编号为 28055,所以桑林志总共已经有过约 24000 个垃圾留言或引用。真实留言或引用与垃圾留言或引用的比例为:1:6。
下面有个留言很搞笑。
8男装品牌 说:
June 23rd, 2006 at 11:37 am什么是SPAM,请大家别老用英文缩略语好不好?
我这样做有没有效果啊?
男色时代 9桑葚 说:
June 23rd, 2006 at 2:58 pmft,你做的差不多就是spam了
呵呵, 我不小心也帮这个品牌spam了一把。
最近要重写一个迭代的算法, 教授告诉我去改进这个code, 让他跑的更快, 但是改起来工程似乎太大。 今天和猛哥相谈的时候, 他说其实工作量不太大, 根据他的经验, 在他的几万行的floorplan程序中, 真正费时间的核心部分大概只有几百行。 大概十个函数左右的时间就能够占到全部运行时间的90%以上。 猛哥推荐了一个GNU 的 Profiler, 说这个很好使, 可以找出每个模块(函数)的运行时间, 以及比例。 说他在NEC用了这个十多年了, 很喜欢, 还是不要钱的…… 命令叫gprof, 基本每个*nix机器上都会有。 查了一下, 这里有个不错的介绍入门文章 。
一般运用
一般的应用其实很简单, 在用GCC编译的时候加上-pg的选项, 然后按照正常的参数运行你的程序。 运行完了以后就会在当前目录底下生成一个叫gmon.out的文件。 然后用gprof yourExcutable gmon.out -p就可以了。 一般会用>log将其写到log中。 p选项是flat profiling, 会显示各个函数具体的执行时间和所占的比例, 明显后者对帮你找出消耗时间的大头比较有用。 由于是在编译的时候加pg选项,许多调用c运行时库的函数都会被忽略。因为这些库编译的时候都是没有加上pg选项的。 (libc.so) 用gprof的q选项,可以打印函数的调用图。 如果想要在输出的分析中看到相应的源码, 需要在编译的时候加上pg和debug的g选项, 在运行gprof的时候用A选项, 就可以看到Annotated source。
库的支持
有的系统会提供用pg编译的库,(ibc_p.a)。 需要在USE flags中加入profile, 然后再re-emerge glibc,这时在/usr/lib/libc_p.a就可以看到libc_p.a。 如果不支持, 你就需要重新用上pg选项重新编译你的glibc了。
kernal时间和用户时间
如果你的程序中有诸如sleep这样的kernal space的函数, 你的那些函数的运行时间比例可能会都是0, 因为与sleep时间相比, 他们差不多可以忽略。 这个时候最好之前先用time命令看看real,sys,user时间的比例, 看看能不能用上gprof。
另外感觉是man, info了半天看了好多, 还是不知道怎么用, 要在那个里面迅速找出有用的信息, 简单的用用, 对我还真是不容易。 看别人写的介绍要容易很多。 其实大部分时候大多数的人就是要用最简单的功能, 复杂的功能一般人也用不上。 这种时候几个例子就足够了,而这好像是man,info所缺少的。 写那么长那么多页确实也不容易, 但是看起来也辛苦啊…… 大家看man有什么心得吗?
但是, 这里feed的毛病刚好, 评论现在好像又不行了, 要评论就写信给我吧, 我来update出来。:) (这真是个烂办法) 我的gmail邮箱是biantaishabi, 当然也是gtalk。