首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我不能得到一个循环旋转不到一毫秒在C++上的Windows与计时?

循环旋转不到一毫秒的问题在C++上的Windows环境中可能是由于多种因素导致的。以下是可能的原因和解决方法:

  1. Windows操作系统的时间分辨率限制:Windows操作系统的默认时间分辨率是15.6毫秒,这意味着在循环中使用Sleep或其他延迟函数时,最小的延迟时间也是15.6毫秒。要实现更高的精度,可以使用Windows API函数QueryPerformanceCounter和QueryPerformanceFrequency来获取更准确的时间戳。
  2. 编译器优化:编译器可能会对循环进行优化,导致循环时间不准确。可以尝试关闭编译器优化选项,例如使用-O0参数。
  3. 硬件限制:硬件的性能和能力也会对循环时间产生影响。如果硬件性能较低或者负载较高,可能无法达到毫秒级的循环时间。可以尝试在更高性能的硬件环境下运行代码。
  4. 其他系统进程和任务:系统中运行的其他进程和任务可能会占用CPU资源,导致循环时间不准确。可以尝试在空闲状态下运行代码,或者通过优化系统配置来减少其他进程的影响。

总结起来,要在C++的Windows环境中实现循环旋转不到一毫秒的精度,可以尝试使用Windows API函数获取更准确的时间戳,关闭编译器优化选项,确保在高性能的硬件环境下运行代码,并减少其他系统进程和任务的影响。

相关搜索:为什么我得到一个错误,因为没有一个返回语句,即使我有一个在我的for循环?为什么我不能得到一个1合1的数据帧所有循环的数据帧?为什么我在链表赋值的printList()方法中得到一个无限循环?为什么我在iterrows函数上得到一个方法对象不能迭代的错误?我在一个循环中循环axios,但是我没有得到与请求相关的响应,响应被混淆了。为什么Windows上的C++类定义在'class'之后通常有一个宏令牌?当我试图在windows上使用Cygwin交叉编译Libcork时,我得到了一个错误(windows中存在类似版本的ipset)。为什么即使我的代码在我的python空闲上运行得很好,我也会在HackerRank中得到一个EOF错误?为什么我的程序中的第二个while循环在它之前有一个while循环时不能工作?为什么我在定义了PNG类型后,仍然从PNG文件的TypeScript中得到了一个模块找不到错误?为什么我的while循环可以在主文件中工作,但如果我试图从一个单独的文件中包含它,为什么不能呢?当我在SSB Schema中的一个表上运行dbms_stats.gather_table_stats时,为什么我得到ORA-20000?Rust在Windows上运行我正在与一个针对X86和x64的基本错误作斗争为什么我的socket.io事件侦听器在一个UI组件上可以正常工作,但在React中的另一个组件上却不能工作?当我在windows上运行我的rust应用程序时,着色可以与cargo run一起工作,但当直接使用二进制文件时,它会完全崩溃。为什么?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C++大小写转换和性能

参考链接: C++ towlower() 大小写转换和性能  前言  本文主要讨论最基本的一些大小写转换函数和API,不讨论一些常见的字符串程序库里面的大小写转换接口,另外本文的落脚点是这些转换函数的性能和日常开发中遇到的一些问题...循环百万次,统计时间。  ...测试结果  ====>大小写转换函数时间消耗(循环1000000次)<====  直接计算(不考虑范围):[1077] 毫秒  C库函数:[6193]毫秒  C++库函数:[5912]毫秒  STL算法库模版函数...(循环1000000次)<====  直接计算(不考虑范围):[1076] 毫秒  C库函数:[6272]毫秒  C++库函数:[5865]毫秒  STL算法库模版函数(自定义转换):[3292] 毫秒...在合适的场景下,使用自定义的大小写转换是完全足够,研究这个花了大约半天时间,问题源于一个URL处理函数的性能问题,经过统计发现,这个函数的大量计算消耗在了URL转小写上面,经过改造之后,性能轻松提升60%

1.5K40

C# CheckForIllegalCrossThreadCalls 与Application.DoEvents()

而如果加上DoEvents的话就会对文本框的值实时响应,给用户带来较好的用户体验,可是DoEvents也带来了效率上的问题,处理同样的一个事件调用了DoEvents后效率降低了好几倍,这也是为什么要慎用的原因了...该窗体在每次处理事件时,均将处理与该事件关联的所有代码。所有其他事件在队列中等待。在代码处理事件时,应用程序并不响应。例如,当将另一窗口拖到该窗口前面时,该窗口不重新绘制。...但是第二个,因为用一个计时器来计时。我因为不是很懂计时器,我就写了个类似计时器的代码,原理感觉上和他的差不多。...运行后发现,textBox2.可以得到99999就是结果的值,但是 label2却一直是零,也就相当于没有触发Tick事件,这就把给搞昏了,我明明是设定了Timer的Start而且也在循环之前调用的Tick...因为MSDN上也查不到这方面的原因,我就此当做是结论了。 从这个测验后再回头想DoEvents的功能,我就想DoEvents就好比实现了进程的同步。

1.3K20
  • 编程与线性代数

    我在初接触线性代数的时候简直感觉这是一门天外飞仙的学科,一个疑问在我脑子里浮现出来:线性代数到底是一种客观的自然规律还是人为的设计?...从中学的初等数学和初等物理一路走来,很少人去怀疑一门数学学科是不是自然规律,当我学习微积分、概率统计时也从来没有怀疑过,唯独线性代数让我产生了怀疑,因为它的各种符号和运算规则太抽象太奇怪,完全对应不到生活经验...为什么要问这样一个看起来很蠢的问题呢?因为它的答案显而易见,大家对天天使用的程序语言的认识一定胜过抽象的线性代数,很显然程序语言虽然包含了内在的逻辑,但它们本质上都是人为的设计。...但是,假如同样一个三角形我们把坐标轴旋转一下,让它的边不在坐标轴上,怎么办?我们还能得到它的底和高吗?答案肯定是可以的,但是就明显复杂了,而且还要分很多种情况去分别讨论。...用一个比喻,Java号称与平台无关,不是说Java就是空中楼阁,而是说你用Java编程时底层是Linux还是Windows往往对你没有影响。 向量模型有什么好处呢?

    49210

    线性代数能否视为一门程序语言呢?

    概率统计时 也从来没有怀疑过 唯独线性代数让我们产生了怀疑 因为它的各种符号和运算规则太抽象 太奇怪 完全对应不到生活经验 线性代数 引发了我们去思考一门数学学科的本质 ?...为什么要问这样一个看起来很蠢的问题呢?...可能有人对把线性代数当成一门DSL不放心,给一个矩阵,你就把我的图形旋转了60度沿x轴拉伸了2倍,我总感觉不踏实啊,我都不知道你“底层”是怎么做!...但是,假如同样一个三角形我们把坐标轴旋转一下,让它的边不在坐标轴上,怎么办?我们还能得到它的底和高吗? 答案肯定是可以的,但是就明显复杂了,而且还要分很多种情况去分别讨论。...举个例子,我们可以把“沿逆时针旋转60度”的矩阵M和“沿x轴拉伸2倍”的矩阵N相乘,得到一个新矩阵T来代表“沿逆时针旋转60度并沿x轴拉伸2倍”。

    1.5K31

    VC++获得微秒级时间的方法与技巧探讨

    这样就带来了一些问题,如一旦计算机的CPU被某个进程占用,或系统资源紧张时,发送到消息队列 中的消息就暂时被挂起,得不到实时处理。因此,不能简单地通过Windows消息引发一个对定时要求 严格的事件。...这种定时方法非常 简单,可以实现一定的定时功能,但其定时功能如同Sleep()函数的延时功能一样,精度非常低,最小 计时精度仅为30ms,CPU占用低,且定时器消息在多任务操作系统中的优先级很低,不能得到及时响...精度比WM_TIMER消息映射高,在较 短的定时中其计时误差为15ms,在较长的定时中其计时误差较低,如果定时时间太长,就好象死机一样,CPU占用率非常高,只能用于要求不高的延时程序中。...方式五:与GetTickCount()函数类似的多媒体定时器函数DWORD timeGetTime(void),该函数定时精 度为ms级,返回从Windows启动开始经过的毫秒数。...而这个数值和前面的几种方法得到数值一样,不能精确计算出代码执行的时间(对于定时足够了) 如果执行的代码还没有执行完成就到达轮训时间片,会放弃cpu,直到下次调用。

    1.8K30

    这个蠕虫也许是有史以来最复杂的计算机程序

    史上最复杂的软件是由一些我们不知道的人写的。 这是一个电脑蠕虫。该蠕虫大概是在2005年至2010年间编写。 由于这个蠕虫非常复杂,我只能给出它最简单的表述。 蠕虫首先存在某个U盘上。...然后,根据PC的Windows版本,蠕虫会尝试用两种以前未知的方法中的一个在该PC上获得该管理员的访问权限。同样,在这个蠕虫被发现之前,没有人知道Windows中的这些隐秘的安全漏洞。...蠕虫有一个最后的招数。这一招只有纯粹的邪恶天才才想得到。 除了上述它所做的一切之外,蠕虫会在计算机监控显示器上播放21秒的数据记录,这21秒的数据记录,是在离心机正常工作时捕获的。...蠕虫一遍又一遍地播放记录,循环播放。 结果,对监控人员来说,监控显示器上的所有离心机数据看起来都非常好,非常正常。 但这只是一个由蠕虫产生的假记录。...你永远想不到所有这些问题都是由一种计算机蠕虫引起的,这是一种有史以来最狡猾、最聪明的蠕虫,它由一些拥有无限资金和无限资源的令人难以置信的秘密团队编写,并且设计时只考虑一个目的:潜入并且摧毁某国的核弹计划

    66840

    node的第一步,hello,以及小技巧和CPU使用情况。到底能用几个核心?

    一般情况下,我们可以用 new Date()).getTime() 来得到时间,这个可以精确到毫秒,但是实际运行的时候,由于只能16毫秒左右取一次时间,所以用这种方法只能精确到16毫秒。...为啥要更精确呢,因为我想看看在node里面执行一段代码到底需要多少时间,越精确越好。比如从数据库里读取数据到底要多少毫秒?执行一个函数需要多少时间?...而且几乎每行数值都不一样。 ? 这是循环100次需要的时间。138毫秒。两种计时方法在大于16毫秒的时候,误差就比较小了,在15毫秒内。原因还是前者每16毫秒才能取值一次。...这样,循环100次需要的时间,从100多豪秒,变成了0.1毫秒到0.5毫秒,波动范围比较大。但是这也是一千倍的差距。至于为啥多出来个显示功能,就变得这么慢,我也不太清楚。...难道最新版的node改进了吗,可以利用多核心的CPU了? 还是Windows对node进行了优化? 还是我理解有误。

    61720

    关于JavaScript计时器的知识学习

    几周之前,我在推特上发了这个面试题: ? 在开始之前,先在你脑海中回答这个问题 推特上大约一半的回答都是错误的。答案并不是 V8(或者虚拟机)!!...有些人可能认为这是一个糟糕的面试问题,为什么要知道这个问题呢?!...setTimeout 的第二个参数是延迟(以 ms 为单位)。这就是为什么我将 4 乘以 1000 使其成为 4 秒 setTimeout 的第一个参数是执行将被延迟的函数。...1e10 是 10的十次方,所以循环是一个 10 亿个循环(基本上模拟繁忙的 CPU)。当此循环正在滴答时,节点无法执行任何操作。...另外,因为我们不能使用 let / var,所以我们不能有一个计数器来增加每个递归调用的延迟,但我们可以使用递归函数参数在递归调用期间递增。

    1.6K40

    现代c++中实现精确延时方法总结

    但是这种延时不能指望精确,且最小精度1ms都难以保证。而且这种用法也不能跨平台,Windows下是大写字母开头的Sleep(),单位为毫秒,linux下面是小写的sleep()。...使用计时函数clock() clock() 函数是 C 标准库 time.h 中的一个函数, time.h 标准库中定义了各种涉及日期和时间的函数, 变量类型和宏....但是, 处理器的时钟打点数并不是一个人类可以直观感知的时间概念, 时钟打点数只描绘了该处理器在处理该问题时所耗费的"处理器时间"....为了能将获取到的时间转换成便于人类理解且具有普遍性的"时 分 秒"的计时方式, 我们需要引入一个常量,在 Windows下使用常量 CLOCKS_PER_SEC 来进行转换且 CLOCKS_PER_SEC...大法好_一只牛_007的博客-CSDN博客 C++11新特征8 - 时钟与计时器 - 知乎 c++11 日期和时间工具-(std::chrono::steady_clock)(std::chrono:

    3.6K30

    C# 六种方式实现精确计时

    缺点:与GetTickCount一样,受返回值的最大位数限制。...(ref long lpPerformanceCount); 用于得到高精度计时器(如果存在这样的计时器)的值。...微软对这个API解释就是每秒钟某个计数器增长的数值。 如果安装的硬件不支持高精度计时器,函数将返回false需要配合另一个API函数QueryPerformanceFrequency。...缺点:在一篇文章看到,该API在节能模式的时候结果偏慢,超频模式的时候又偏快,而且用电池和接电源的时候效果还不一样(笔记本) 原文地址:http://delphi.xcjc.net/viewthread.php...精度是ns 在C#中要用该方法必须先建立一个托管C++项目(因为要内嵌汇编),编译成DLL供c#调用,有点麻烦。

    1.3K30

    数学,离一个程序员有多近?

    广告:这里的 e 是数学常数,自然对数的底数,无限不循环小数。这道题的意思就是,找出 e 中最先出现的 10 位质数,然后可以得出一个网址。...我对这个的理解就是家里的三居还是四局格局,MVC是我们经常用的大家都熟悉,DDD无非就是家里多了个书房,把各自属于哪一个屋子的摆件规整到各自屋子里。...HashMap通过哈希值与桶定位坐标 那么直接获取哈希值就好了,这里为什么要做一次扰动呢? 作用:为了证明扰动函数的作用,这里选取了10万单词计算哈希值分布在128个格子里。...由松本真和西村拓士在1997年开发,基于有限二进制字段上的矩阵线性递归。可以快速产生高质量的伪随机数,修正了古典随机数发生算法的很多缺陷。...从C++11开始,C++也可以使用这种算法。在Boost C++,Glib和NAG数值库中,作为插件提供。 五、程序员数学入门 与接触到一个有难度的知识点学起来辛苦相比,是自己不知道自己不会什么!

    56110

    TCPIP具体解释–TCPUDP优化设置总结& MTU的相关介绍「建议收藏」

    这个值也就是你在调用getsockopt()时指定SO_MAX_MSG_SIZE所得到返回值,不论什么使用SOCK_DGRAM属性的socket,一次send的数据都不能超过这个值,否则必定得到一个错误...给出了一些传输小数据包的优化设计方案。 背景:当Microsoft TCP栈接收到一个数据包时,会启动一个200毫秒的计时器。当ACK确认数据包 发出之后,计时器会复位,接收到下一个数据包时。...因此,10000个Send调用仅仅能一个数据包一个数据 包的发送和确认,因为下列原因,每一个ACK确认信息被延迟200毫秒: 1、当server获取到一个数据包,启动一个200毫秒的计时器。...ACK确认信息不能被发回的数据包顺路携带。 3、client在没有收到前一个数据包的确认信息前,不能发送数据包。 4、服务端的计时器超时后。ACK确认信息被发送到client。...仅仅要Winsock内核缓冲区 得到一个大于MTU值的数据块,就会发送若干个数据包。剩下最后一个数据包。 发送方除了最后一个数据包,都不会 被200毫秒的计时器触发。

    1.8K10

    Unity基础教程系列(新)(六)——Jobs(Animating a Fractal)

    (球和多个子节点,正确) 1.3 重定位 现在,我们得到了一个分形,每个部件正好有两个子节点,但要除了最大深度的最小部件。这些子项始终以相同的方式放置:一个在顶部,另一个在右侧。...这可能会在场景窗口中发生-至少在Mac上如此-但在游戏窗口或内部版本中不会发生。根据游戏编辑器的布局,为游戏窗口打开VSync可能会变得更好或更糟。这是与计时有关的编辑器错误,但我不知道确切原因。...Burst无法优化的调用指令对应于我们调用的静态Quaternion方法。Burst经过专门优化,可与Unity的数学库配合使用,该库在设计时考虑了矢量化。...但它仍然不能向量化循环,因为不能向量化返回类型。之所以如此,是因为我们的数据太大,无法向量化循环多次迭代。...这进一步将我的平均更新时间减少到1.7ms。使用较大的批处理数量并不能进一步改善,甚至使速度变慢,因此我将其保留为5。

    3.6K31

    进程、线程、应用程序之间的关系

    该进程ID由Windows NT或Windows 2000生成,并可以循环使用。因此,进程ID将不会越编越大,它们能够得到循环利用。  第三列是被进程中的线程所占用的CPU时间百分比。...通 常情况下,在大多数NT系统中,时钟以10毫秒的间隔运行。每10毫秒NT的心脏就跳动一下。有一些驱动程序代码片段运行并显示谁是当前的线程。让我们将 CPU时间的最后10毫秒记在它的帐上。...因此,如果一个线程开始运行,并在持续运行8毫秒后完成,接着,第二个线程开始运行并持续了2毫秒,这时,时钟激 发,请猜一猜这整整10毫秒的时钟周期到底记在了哪个线程的帐上?答案是第二个线程。...每一个应用程序被加载到单独的进程中,这样就将该应用程序与在同一台计算机上运行的其他应用程序相隔离。      ...隔离这些应用程序的原因在于内存地址是与进程相关的;在目标进程中,不能通过任何有意义的方式使用从一个进程传递到另一个进程的内存指针。此外,您不能在两个进程间进行直接调用。

    1.6K60

    事件循环的秘密,竟然影响着浏览器的一切!

    我正在执行一个JS 函数,执行到一半的时候某个计时器到达了时间,我该立即去执行它的回调吗? 浏览器进程通知我"用户点击了按钮",与此同时,某个计时器也到达了时间,我应该处理哪一个呢? .. ....渲染主线程想出了一个绝妙的主意来处理这个繁琐复杂的问题:排队 在最开始的时候,渲染主线程会进入一个无限循环。 每一次循环会检查消息队列中是否有任务存在。...在 Chrome的源码中,它开启一个不会结束的for 循环,每次循环从消息队列中取出第一个任务执行―而其他线程只需要在合适的时候将任务加入到队列末尾即可。...但浏览器必须有一个微队列,微队列的任务一定具有最高的优先级,必须优先调度执行。 面试题: JS中的计时器能做到精确计时吗? 为什么?...按照W3C的标准,浏览器实现计时器时,如果嵌套层级超过5层,则会带有4毫秒的最少时间,这样在计时时间少于4毫秒时又带来了偏差。

    15610

    浏览器原理 - 事件循环

    我正在执行一个 JS 函数,执行到一半的时候某个计时器到达了时间,我该立即去执行它的回调吗? 浏览器进程通知我“用户点击了按钮”,与此同时,某个计时器也到达了时间,我应该处理哪一个呢?...…… 渲染主线程想出了一个绝妙的主意来处理这个问题:排队 消息队列 在最开始的时候,渲染主线程会进入一个无限循环 每一次循环会检查消息队列中是否有任务存在。...在 Chrome 的源码中,它开启一个不会结束的 for 循环,每次循环从消息队列中取出第一个任务执行,而其他线程只需要在合适的时候将任务加入到队列末尾即可。...但浏览器必须有一个微队列,微队列的任务一定具有最高的优先级,必须优先调度执行。 面试题:JS 中的计时器能做到精确计时吗?为什么?...,如果嵌套层级超过 5 层,则会带有 4 毫秒的最少时间,这样在计时时间少于 4 毫秒时又带来了偏差 受事件循环的影响,计时器的回调函数只能在主线程空闲时运行,因此又带来了偏差

    1.8K30

    一周极客热文:依赖 IDE 做开发,会让你成为一名糟糕的程序员么?

    学习语言有点像学习作文,但这并不意味着你能够突然变成一个著名散文作家! 《C程序设计语言》这本书不是关于C++的,不过所有与C有关的东西都和C++有关。 2....《C++程序设计语言》它讲解了C++中的每一个方面。 《C++标准程序库:自修教程与参考手册》这本书涵盖了C++标准库的每一个方面,第二版中涵盖了C++2011标准。...内存优化软件事实上以下面的两种方式之一工作: 调用Windows API EmptyWorkingSet 来强制正在运行的程序将工作内存写入Windows的页面文件。...这个虚拟机仿真了一个32位的x86兼容处理器,一个8259可编程中断控制器,一个8254可编程中断计时器,和一个16450 UART。...然而最近一次《人物》采访,周鸿祎却重新界定了他与雷军的关系,”如果非要我说雷军有什么缺点,那就是太过敏感,其他都挺好的。

    1.6K100
    领券