c语言计时函数返回时间不定,求详解为什么(只点击了两次运行,并未改变代码)

问题描述

c语言计时函数返回时间不定,求详解为什么(只点击了两次运行,并未改变代码)

代码如上,
结果如下:
第一次
第二次:

解决方案

同样的代码,执行过程中计算机可能遇到各种小问题,一般来说短期内第二次运行会快点。

第一次会进行资源的分配,将代码拷到内存里,再执行。

如果在很短的时间内进行第二次运行,代码还在内存里,CPU少了将代码拷到内存的操作,所以会快上一点。

你问的这个问题设计到了操作系统的CPU局部性策略,操作系统在执行程序时,并不是像C一样,顺序执行,因为同一时间,并不是只有你的程序需要CPU的参与,
别的程序也需要,CPU可能在很短的时间内,执行了m次,然后跑去执行别的程序了,再跑回来执行你剩下的代码。

大概是这么个意思,如果不对,请大家轻拍

解决方案二:

clock计时精度不够,所以表现在结果不准确。
主要是这个问题。
另外考虑计算机内的缓存的作用,因为数组是连续存储的,内循环访问最低维下标理论上可以更快一点。但是你现在的问题还是前者。

解决方案三:

简单来说就是你的CPU的运行状况不一样,还有就像楼上所说clock计时的精确度问题!

解决方案四:

简单来说就是你的CPU的运行状况不一样,还有就像楼上所说clock计时的精确度问题!

时间: 2024-11-08 19:21:51

c语言计时函数返回时间不定,求详解为什么(只点击了两次运行,并未改变代码)的相关文章

mysql 获取当前日期函数及时间格式化参数详解_Mysql

MYSQL 获取当前日期及日期格式 获取系统日期: NOW() 格式化日期: DATE_FORMAT(date, format) 注: date:时间字段 format:日期格式 返回系统日期,输出 2009-12-25 14:38:59 select now(); 输出 09-12-25 select date_format(now(),'%y-%m-%d'); 根据format字符串格式化date值: %S, %s 两位数字形式的秒( 00,01, ..., 59) %I, %i 两位数字形

c语言-求用dos.h下的peek函数读取bios时钟的详解(附源代码)

问题描述 求用dos.h下的peek函数读取bios时钟的详解(附源代码) /*源代码的地址是http://zhidao.baidu.com/link?url=zOaOjlDZY4sjOIrX2v9JxTKmCt-cVxH2dsFX047_2QhWfFy0beWJAvMZ4XkPgdAb7uPNWLtpumnZBzpsubjHb_下面的代码只是其中的一段,是我想问的问题 */ int GetTickCount() { /*读取BIOS时钟*/ int ret; ret = peek(0x00x4

c语言-C语言remove函数返回-1

问题描述 C语言remove函数返回-1 在C语言中调用remove函数,调用失败返回的是-1,路径没有问题,请问该怎么办? 解决方案 没人回答吗..是我的权限不够... 解决方案二: 检查一下路径对不对,如果是winxp以上的话,用管理员权限运行你的程序.另外调用int iErr = GetLastError();看看有没有错误码.有的话看看是什么内容.

函数调用-c语言中函数返回值类型的问题

问题描述 c语言中函数返回值类型的问题 看一道改错题: #include #include #include proc(int k)//很显然根据主调函数和返回值类型知道这里缺少类型 { int n;float s,w,p,q; n=1; s=1.0; while(n<=k){ w=2.0*n; p=w-1.0; q=w+1.0; s=s*w*w/p/q; n++; } return s; } void main(){ system("CLS"); printf("%f

asp.net 函数的定义 返回值 调用方法详解说明(vb.net/c#)

asp教程.net 函数的定义 返回值 调用方法详解说明(vb.net/c#),首页我们来看一个vb.net中开的asp.net教程创建一个函数的做法,如下 <script runat="server" language="VB">       Function getName() As String         Return "a"       End Function       Sub Page_Load(s As Obje

代码-linux应用程序的运行流程 求详解

问题描述 linux应用程序的运行流程 求详解 事情是这样的,老师给了个作业(如下),因为课程时间等原因,开始想要啃下2.6源码的,在各种深度了解,剖析 巴拉巴拉等的linux电子书里并没有看出多大的头绪,讲到看源码更是头大,加之时间有限,所以并没有时间去仔细的研读,想要请各位大神给些指导,毕竟看到操作系统的庞大代码就不知道从哪里入手了. 如果有耐心+时间的话 更希望能够给出一些具体的解题入手步骤,如:怎么去跟踪程序的函数运行,函数间调用大概关系是怎么研究... 请不要嫌弃...知识掌握有限,想

instance-JAVA 匿名类的一个问题,求详解

问题描述 JAVA 匿名类的一个问题,求详解 请先看代码: static List intArrayAsList(final int[] a) { return new AbstractList() { public Object get(int i) { return new Integer(a[i]); } public int size() { return a.length; } public Object set(int i, Object o) { int oldVal = a[i]

index-lua的元表怎么遍历不到,而且为什么也不能改变表中的元素的值呢,求详解?

问题描述 lua的元表怎么遍历不到,而且为什么也不能改变表中的元素的值呢,求详解? local function tab(t) local proxy = {} local mt = { __index = t, __newindex = function(t, k, v) error("attempt to update readonly a table") end } setmetatable(proxy, mt) return proxy end local days = tab

java-为什么我按照学号查询查哪个学号都是查出全部,下边有我的代码,哪位大神会的,求详解求改正谢谢了

问题描述 为什么我按照学号查询查哪个学号都是查出全部,下边有我的代码,哪位大神会的,求详解求改正谢谢了 action对应的代码: private int xueHao;public String getList() throws Exception { xueshengList = dao.getList(xueHao); return SUCCESS; } public int getXueHao() { return xueHao;}public void setXueHao(int xue