`
isiqi
  • 浏览: 16554865 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

linux编程的108种奇淫巧计-2(RDTSC)【续】

阅读更多

接上回:http://blog.csdn.net/pennyliang/archive/2010/10/21/5956302.aspx

有时候我们希望在x86平台下获得更加高的精度。如果我们想准确的知道一段程序,一个函数的执行时间,可以连续执行2次rdtsc,之间没有一行代码,来计算这两段指令执行过程会有的cycle数,不同机器可能都会有不同,和机器的性能有关系,但和负载没关系,也就是多进程,多线程情况下,连续两个rdtsc之间不会插入很多cycle,这一点大家可以做实验来验证。

start = rdtsc();
end = rdtsc();

在获得这个数据后,我们对一段代码的执行时间就可以做一个更加精确的估计。我的测试机比较一般大约是100个cycle,

用100/(3000.164*1000*1000)=0.033微秒,约合33纳秒,这个时间段几乎是不会发生什么进程切换的,因此可以认为计算的精度是可接受的。

RDTSC只在X86下有效,其余平台会有类似指令来做准确计数,RDTSC指令的精度是可以接受的,里面能插得cycle是很有限的。如果对计数要求没那么高,可以采用一些通用库函数,当然你也可以用类似的方法来考察这些库函数的精度,连续执行2次就行。

例如下面的代码得到两次rdtsc指令之间的cycle数。

#include <stdlib.h>
#include <stdio.h>

#if defined(__i386__)

static __inline__ unsigned long long rdtsc(void)
{
unsigned long long int x;
__asm__ volatile ("rdtsc" : "=A" (x));
return x;
}
#elif defined(__x86_64__)
static __inline__ unsigned long long rdtsc(void)
{
unsigned hi, lo;
__asm__ __volatile__ ("rdtsc" : "=a"(lo), "=d"(hi));
return ( (unsigned long long)lo)|( ((unsigned long long)hi)<<32 );
}

#endif

int main(void)
{
register int start = 0;
register int end = 0;
const int MAX_COUNT = 10000000;
volatile int sum = 0;
const float CPU_MHZ = 3000.164; //use cat /proc/cpuinfo get the value
const float CPU_tick_count_per_second = CPU_MHZ*1000*1000;
start = rdtsc();
end = rdtsc();

printf("sum:%d,run tick count:%d,run time:%f\n",sum,end - start,(end -start)/CPU_tick_count_per_second);
return 0;
}

分享到:
评论

相关推荐

    星火考研 巧计速计 艾宾浩斯背单词专用词库

    星火考研系列是针对准备研究生入学考试(简称考研)的学生提供的一种学习资源,其中的“巧计速计”方法是针对英语单词记忆的一种技巧性、高效的学习方法。艾宾浩斯记忆曲线则是心理学家赫尔曼·艾宾浩斯提出的理论,...

    巧计英语7000单词

    【巧计英语7000单词】是一种创新的英语词汇学习方法,旨在通过800个有趣且富有挑战性的句子帮助学习者记忆7000个英语单词。这种方法强调趣味性和实用性,使得学习过程不再枯燥乏味。这些句子涵盖了广泛的词汇,包括...

    小学数学数学故事小女儿巧计救父

    在历史长河中,总有一些故事以智慧之光映照着人性的光辉,而“小学数学数学故事小女儿巧计救父”便是其中之一。这个故事不仅仅是一个关于智谋的叙述,更是数学知识与现实生活紧密相连的生动展现,其背后的寓意深远,...

    个省级行政区的名称和位置巧计PPT教案.pptx

    个省级行政区的名称和位置巧计PPT教案.pptx

    试听巧计10000单词

    试听巧计10000单词,杨金明 往年的参考资料,仅共参考

    短文改错口诀巧计2.ppt

    2. **名词数**:确保名词的单复数形式正确。例如,"Playing with fire are dangerous." 应改为 "Playing with fire is dangerous.",因为动名词 "playing" 作主语时,谓语动词应用单数形式。 3. **非谓语动词**:...

    2020考研数学阅卷人概念·公式·定理速查巧计手册

    速查巧计手册是一种便于携带和快速查找的工具书,它将大量的概念、公式、定理等信息进行分类整理,使得使用者能够迅速找到所需信息。在考研数学的复习过程中,这种手册可以大大提高复习效率,帮助考生在短时间内掌握...

    英语谚语巧计单词700词汇任你掌握

    标题提到的“英语谚语巧计单词700词汇任你掌握”暗示了一种通过学习英语谚语来记忆单词的方法。这种方法利用了谚语的韵律感和故事性,使单词的记忆过程变得有趣且易于接受。例如,“Anthropologists have discovered...

    初中语文文摘历史苏军巧计“忽悠”希特勒

    初中语文文摘历史苏军巧计“忽悠”希特勒

    个省级行政区的名称和位置巧计.pptx

    个省级行政区的名称和位置巧计.pptx

    个省级行政区的名称和位置巧计学习教案.pptx

    个省级行政区的名称和位置巧计学习教案.pptx

    考研英语词汇巧计读故事20天搞定英语考研单词(含金量极高).

    考研英语词汇巧计。20天内记住考研词汇,拥有去的故事记住考研英语单词

    新托福词汇17天巧计

    自己复习托福 才知道但背单词有多艰难 无论是词根式还是其他方法 这是我见到的最好的方法了 共享给大家

    项目管理44个过程输入输出工具技术忆巧计法.pdf

    2. 软考中的44个过程、输入输出、工具、技术: 本资料的核心在于对软考中涉及的项目管理过程、输入输出、工具和技术进行了归纳总结。在项目管理知识体系中,通常会定义一系列的标准过程,每一个过程都有其特定的输入...

    2017_2018学年高中历史第三单元北魏孝文帝改革第2课北魏孝文帝的改革措施试题新人教版201805252111

    二、设巧计迁都洛阳 1. 原因: - 政治:加强对中原地区的统治,平城(今山西大同)的地理位置不利于统治全局,保守势力阻碍改革。 - 经济:平城地处边远,粮食供应困难。 - 军事:与北方游牧民族临近,存在安全...

    leetcode跳跃-leetcode:leetcode

    31.下一个排列----巧计 32.(hard)最长有效括号----栈 33.搜索旋转排序数组----二分查找 34.在排序数组中查找元素的第一个和最后一个位置----二分查找 39.组合总和----回溯 42.(hard)接雨水----双指针或栈 46....

    第3单元历史第2课北魏孝文帝的改革措施.ppt

    2. **设巧计迁都洛阳** - **迁都原因**:平城作为旧都,不利于改革的推进,保守势力强大,且地理位置不利于经济发展和军事防御,而洛阳作为中原的中心,更适合国家长远发展。 - **迁都过程**:孝文帝以南伐为借口...

    考研数学概念公式定理手册

    2. 线性代数中的矩阵理论、行列式计算、线性空间和线性变换; 3. 概率论与数理统计中的随机事件、随机变量、概率分布及其数字特征; 4. 各类数学定理,如中值定理、积分定理、概率分布定理等; 5. 解题技巧和常见...

    项目管理工程师备考指南与习题详解

    2. 文档中提到了记忆技巧和巧计法,这说明了备考过程不仅仅是对知识点的死记硬背,更多的是需要通过一些技巧和方法来帮助记忆和理解。例如,可以使用思维导图、记忆宫殿等方法将复杂的知识点串联起来,形成系统的...

    数学公式(高数、线代、概率)-2020.05.23.rar

    2. "7、考研数学阅卷人概念·公式·定理速查巧计手册(190页).pdf":这是一份为考研准备的速查手册,涵盖了阅卷人关注的概念、公式和定理,对于快速回顾和记忆关键知识点很有帮助。 3. "28、不定积分公式大全.pdf":...

Global site tag (gtag.js) - Google Analytics