C语言计算代码执行所耗CPU时钟周期

#include "windows.h"

LARGE_INTEGER _start = { 0 }, _end = { 0 };
__asm{
  rdtsc
  mov dword ptr [_start.LowPart], eax
  mov dword ptr[_start.HighPart], edx
}

//your code here

__asm{
  rdtsc
  mov dword ptr [_end.LowPart], eax
  mov dword ptr[_end.HighPart], edx
}

long interval = static_cast<long>(_end.QuadPart - _start.QuadPart);
时间: 2024-12-29 06:55:39

C语言计算代码执行所耗CPU时钟周期的相关文章

用GetTickCount()计算一段代码执行耗费的时间的小例子

var aNow,aThen,aTime:Longint; begin aThen := GetTickCount(); Sleep(1000);//代码段 aNow := GetTickCount(); aTime := aNow-aThen; ShowMessage(IntToStr(a)); end; 用GetTickCount()计算一段代码执行耗费的时间的小例子,布布扣,bubuko.com

C语言计算圆周率PI的代码

下面的内容段是关于C语言计算圆周率PI的内容. #include "stdio.h" #include "stdlib.h" #define SCALE 10000 #define ARRINIT 2000 void pi_digits(int digits) { int carry = 0; int arr[digits + 1]; for (int i = 0; i <= digits; ++i) arr[i] = ARRINIT; for (int i

erlang虚拟机代码执行原理

erlang是开源的,很多人都研究过源代码.但是,从erlang代码到c代码,这是个不小的跨度,而且代码也比较复杂.所以这里,我利用一些时间,整理下erlang代码的执行过程,从erlang代码编译过程,到代码执行过程做讲解,然后重点讲下虚拟机执行代码的原理.将本篇文章,献给所有喜欢erlang的人. erlang代码编译过程 erlang对开发者是友好的,从erlang程序文件编译成能被erlang虚拟机识别的beam文件,在这个编译过程还对开发者暴露中间代码.借助这个中间代码,我们就可以逐步

2代码执行的原理_CPU,内存,硬盘的关系

一.硬件简介 CPU CPU又称中央处理器,本质是超大规模的集成电路 CPU负责 处理数据,计算数据,负责执行程序 2.内存(也是来存取数据的,并不参与计算) 临时 存储数据(断点后,数据消失) 速度比硬盘快一千倍 空间小 内部是一个个芯片,不需要转动,直接存取数据 3.硬盘    永久 存储数据,断点后数据还在 速度慢 空间大 内部是一个转盘,转动得越快,存取数据越快 二.代码运行的全过程(原理) 首先操作系统是自由的,它可以对硬盘,CPU,内存发号施令 运行一段代码,操作系统先把代码和代码解

debian内核代码执行流程(一)

本文根据debian开机信息来查看内核源代码. 系统使用<debian下配置dynamic printk以及重新编译内核>中内核源码来查看执行流程. 使用dmesg命令,得到下面的开机信息: [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 3.2.57 ([email protected]) (gcc versio

C语言的代码内存布局详解

一个程序本质上都是由 BSS 段.data段.text段三个组成的.这样的概念在当前的计算机程序设计中是很重要的一个基本概念,而且在嵌入式系统的设计中也非常重要,牵涉到嵌入式系统运行时的内存大小分配,存储单元占用空间大小的问题. BSS段:在采用段式内存管理的架构中,BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域.BSS是英文Block Started by Symbol的简称.BSS段属于静态内存分配. 数据段:在采用段式内存管理的架构中,数据段(da

[Linux内核分析第一周课程] 由C语言程序的汇编表示观察CPU寄存器与内存的互动

孟宁<Linux内核分析>第一周实验 作者:Zou Le 原创作品转载请注明出处. 课程信息: <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ---------------------------实验正文--------------------------- 本实验在实验楼64位LIinux虚拟机下进行. C代码如下: int increment5(int x) { return x + 5; }

第一章 Java代码执行流程

说明:本文主要参考自<分布式Java应用:基础与实践> 1.Java代码执行流程 第一步:*.java-->*.class(编译期) 第二步:从*.class文件将其中的内容加载到内存(类加载)(运行期) 第三步:执行代码(运行期) 2.代码编译 javac命令将源码文件编译为*.class文件. 后边将介绍: javac将*.java编译成*.class文件的过程 class文件的文件格式,以及其存储的内容 3.类加载 主要是指将*.class文件加载到JVM,并形成Class对象的机

ElasticSearch Groovy脚本远程代码执行漏洞

什么是ElasticSearch? 它是一种分布式的.实时性的.由JAVA开发的搜索和分析引擎. 2014年,曾经被曝出过一个远程代码执行漏洞(CVE-2014-3120),漏洞出现在脚本查询模块,由于搜索引擎支持使用脚本代码(MVEL),作为表达式进行数据操作,攻击者可以通过MVEL构造执行任意java代码,后来脚本语言引擎换成了Groovy,并且加入了沙盒进行控制,危险的代码会被拦截,结果这次由于沙盒限制的不严格,导致远程代码执行任意命令..."任意"你懂的,比如:利用nc反弹sh