
linux
liuzejian4
这个作者很懒,什么都没留下…
展开
-
linux编程的108种奇淫巧计-1(FALSE SHARING)【续】
<br />上篇博客:http://blog.youkuaiyun.com/pennyliang/archive/2010/10/20/5953939.aspx提出了一段代码,并没有给出解释,本文接上文继续展开讨论。<br /> 该文有很多网友回复,比较集中的看法是CPU字节对齐,巧合的是有一个朋友用这个代码做了测试,发现对齐和不对齐的代码执行的速度是一样的,原因是他的笔记本安装的linux操作系统,而笔记本是单核的,所以就出现了这个状况,如果和CPU字节对齐,在单核的情况下怎么会速度一样呢?另外如果是CPU转载 2010-10-30 20:36:00 · 400 阅读 · 0 评论 -
linux编程的108种奇淫巧计-2(RDTSC)
<br /> 通常我们需要对程序运行的准确时间进行测量,但多线程,多核环境下,这变得很困难,我们有没有一种比较通用简单的方法来做到这一点呢?这些方法都存在哪些问题,如何改进可以抵消这些误差呢?<br /> 本文将介绍这里的来龙去脉,还是从一段小程序开始。<br />#include <stdlib.h><br />#include <stdio.h><br />#if defined(__i386__)<br />static __inline__ unsigned long long r转载 2010-10-30 20:38:00 · 501 阅读 · 0 评论 -
linux编程的108种奇淫巧计-1(FALSE SHARING)
<br />我打算开个长篇系列博客,预计108篇吧,但愿能在1-2年内完成。<br /> 注:考虑到我本人长期使用linux系统做开发,因此有些代码在windows环境下无法编译或者会有问题,建议大家都使用linux环境做实验,最好是2.6内核的,处理器需要是多核。很多读者说我是纸上谈兵,这个确实不好,从本系列开始基本都是50行左右的代码。本系列不代表任何学术或业界立场,仅我个人兴趣爱好,由于水平有限,错误难免,请不要有过分期望。<br /> 废话不多说,今天就写第一篇如下:<b转载 2010-10-30 20:36:00 · 428 阅读 · 0 评论 -
linux编程的108种奇淫巧计-4(编译展开)
<br /> 今天继续介绍第4种常见技巧,编译展开,代码见本文最后,重要的部分有注释说明。<br /> 我们知道对于循环,编译器会自动进行展开,但是如何展开,这完全不可控,如果我们自行码代码,代码会显得臃肿难看,大段重复代码,因此本为介绍了一种常见的方法进行这种代码展开,可以写到任意层次,我这里只写到了DO16,见代码加粗的部分。<br /> 实验表明在手动展开后,加上O3的编译优化,依然能够比不手动展开要快,大家可以实验以下的代码。<br /> <br />原创 2010-10-30 20:40:00 · 664 阅读 · 0 评论