【发布时间】:2014-02-22 11:39:24
【问题描述】:
我想知道是否有可能让线程休眠一定数量的 CPU 周期?
我考虑过只插入“nop”,但我不确定它们是否会被优化掉,我希望有一个高级别的解决方案。
有什么好东西可以推荐给我吗?如果不能,我可以防止手动插入的“nop”在不禁用所有优化的情况下得到优化吗? 亲切的问候
卢卡斯·海弗利格
编辑:作为另一个问题:是否可以测量某个代码片段在执行期间所需的周期数?
【问题讨论】:
-
一些高级编译器允许将程序的某些部分排除在优化之外,甚至在该部分设置一定的优化级别。哎呀,即使是 Delphi 5 也允许它,但我还没有在 VisualStudio 中看到这样的编译器指令。
-
你看过 System.Threading.Thread.SpinWait 吗?
-
由于我没有完全绑定到 C#,是否会切换到 c++/c 之类的东西添加此功能?
-
Windows 是一个多线程系统,你永远不会知道在开始和结束之间解析了多少 CPU 周期。 C# 是一种解释型语言,并进行了部分优化,您永远无法知道您的代码将使用多少 CPU 周期。在谈论 c# 时,这个问题真的不相关。
-
Profiler 是您第二个问题的答案...第一部分的目标尚不清楚 - 如果您真的需要浪费精确测量的周期数 - 检查 CPU 手册,找到时序最稳定的指令并使用它们在一个循环中(可能需要针对特定的 CPU 系列)。
标签: c# sleep cpu-cycles