static void Main()
{ Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
long c=stopWatch.ElapsedMilliseconds;
Thread.Sleep(100);
long d=stopWatch.ElapsedMilliseconds;
Console.WriteLine(d-c); long i=DateTime.Now.Ticks;
Thread.Sleep(100);
i-=DateTime.Now.Ticks;
Console.WriteLine(i/10000);
}输出的结果是:
100
-118 为什么DateTime.Now.Ticks相差那么大?不是100纳秒吗?
{ Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
long c=stopWatch.ElapsedMilliseconds;
Thread.Sleep(100);
long d=stopWatch.ElapsedMilliseconds;
Console.WriteLine(d-c); long i=DateTime.Now.Ticks;
Thread.Sleep(100);
i-=DateTime.Now.Ticks;
Console.WriteLine(i/10000);
}输出的结果是:
100
-118 为什么DateTime.Now.Ticks相差那么大?不是100纳秒吗?
Thread.Sleep也不是精确的
你这结果只是运气问题
但是第一个相差不会很大,用DateTime.Now.Ticks就相差特大,而msdn上说DateTime.Now.Ticks是100纳秒,也就是千万分之一毫秒,这到底是什么意思?
你是在混分吗?老是在教别人逃避问题,你解决不了也就算了,还装出一副高手的样子,这几天来csdn碰到多个你这种人了
我用多线程时,他洋洋洒洒一大篇,讽刺我在用多线程,还说让我用异步啥的,到最后还是用到了多线程,其实根本不需要知道异步是什么东西,我在网页的在线手册里也没有列出什么异步,但我那个帖子后来解决了问题,每个线程间相隔固定的时间 就是异步了,后来有个2级的网友告诉我autoresetevent 把问题轻松解决了,线程之间切换耗时0毫秒,你当时也在那个帖子,也是说一大堆打击人的话,其实你也不知道autoresetevent这个东西,也是别人发出来了以后才去搜的吧?不然一句话就解决的问题,根本不会说那么多没用的了至于这个问题,我刚才特意下了个鲁大师,温度压力测试,并把100ms改为3ms,结果还是这样的结果明明自己不懂也就算了,还非要装出一副专家的样子,实践证明 你懂个屁的系统?或许你看了一些书,那也是书呆子,没有自己理解
另外,我从这个月开始学的c#,像什么变量之类的都没细看,用到了再去翻在线手册,以前就看过一些php代码,但是没具体做过东西,我觉得你们这些等级高的人压根和高手不搭边,想想也是,真是高手就不会那么多无用的话了,想让别人尊重你,你得有真材实料,而不是说一些空话,可笑的是 上个帖子里的那个人在不停地教我做人的道理,你跟他完全一个类型的,没真材实料 爱摆臭架子
http://blogs.msdn.com/b/ericlippert/archive/2010/04/08/precision-and-accuracy-of-datetime.aspx
一直死循环输出当前时间,你会发现很多重复的时间,然后一改变就已经跳过了100ms左右
2 2015-06-12 08:46:54.967
....
2051 2015-06-12 08:46:54.967
2052 2015-06-12 08:46:54.967
2053 2015-06-12 08:46:54.982
2054 2015-06-12 08:46:54.982
....
10000 2015-06-12 08:46:54.998
Start:2015-06-12 08:46:54
Stop:2015-06-12 08:46:54
Total:00:00:00.0468750
实测数据,连毫秒都根本不精确,别说纳秒了
你是在混分吗?老是在教别人逃避问题,你解决不了也就算了,还装出一副高手的样子,这几天来csdn碰到多个你这种人了
我用多线程时,他洋洋洒洒一大篇,讽刺我在用多线程,还说让我用异步啥的,到最后还是用到了多线程,其实根本不需要知道异步是什么东西,我在网页的在线手册里也没有列出什么异步,但我那个帖子后来解决了问题,每个线程间相隔固定的时间 就是异步了,后来有个2级的网友告诉我autoresetevent 把问题轻松解决了,线程之间切换耗时0毫秒,你当时也在那个帖子,也是说一大堆打击人的话,其实你也不知道autoresetevent这个东西,也是别人发出来了以后才去搜的吧?不然一句话就解决的问题,根本不会说那么多没用的了至于这个问题,我刚才特意下了个鲁大师,温度压力测试,并把100ms改为3ms,结果还是这样的结果明明自己不懂也就算了,还非要装出一副专家的样子,实践证明 你懂个屁的系统?或许你看了一些书,那也是书呆子,没有自己理解
另外,我从这个月开始学的c#,像什么变量之类的都没细看,用到了再去翻在线手册,以前就看过一些php代码,但是没具体做过东西,我觉得你们这些等级高的人压根和高手不搭边,想想也是,真是高手就不会那么多无用的话了,想让别人尊重你,你得有真材实料,而不是说一些空话,可笑的是 上个帖子里的那个人在不停地教我做人的道理,你跟他完全一个类型的,没真材实料 爱摆臭架子
年轻
你是在混分吗?老是在教别人逃避问题,你解决不了也就算了,还装出一副高手的样子,这几天来csdn碰到多个你这种人了
我用多线程时,他洋洋洒洒一大篇,讽刺我在用多线程,还说让我用异步啥的,到最后还是用到了多线程,其实根本不需要知道异步是什么东西,我在网页的在线手册里也没有列出什么异步,但我那个帖子后来解决了问题,每个线程间相隔固定的时间 就是异步了,后来有个2级的网友告诉我autoresetevent 把问题轻松解决了,线程之间切换耗时0毫秒,你当时也在那个帖子,也是说一大堆打击人的话,其实你也不知道autoresetevent这个东西,也是别人发出来了以后才去搜的吧?不然一句话就解决的问题,根本不会说那么多没用的了至于这个问题,我刚才特意下了个鲁大师,温度压力测试,并把100ms改为3ms,结果还是这样的结果明明自己不懂也就算了,还非要装出一副专家的样子,实践证明 你懂个屁的系统?或许你看了一些书,那也是书呆子,没有自己理解
另外,我从这个月开始学的c#,像什么变量之类的都没细看,用到了再去翻在线手册,以前就看过一些php代码,但是没具体做过东西,我觉得你们这些等级高的人压根和高手不搭边,想想也是,真是高手就不会那么多无用的话了,想让别人尊重你,你得有真材实料,而不是说一些空话,可笑的是 上个帖子里的那个人在不停地教我做人的道理,你跟他完全一个类型的,没真材实料 爱摆臭架子不怕不懂,怕的是你不懂还不虚心学习
你是在混分吗?老是在教别人逃避问题,你解决不了也就算了,还装出一副高手的样子,这几天来csdn碰到多个你这种人了
我用多线程时,他洋洋洒洒一大篇,讽刺我在用多线程,还说让我用异步啥的,到最后还是用到了多线程,其实根本不需要知道异步是什么东西,我在网页的在线手册里也没有列出什么异步,但我那个帖子后来解决了问题,每个线程间相隔固定的时间 就是异步了,后来有个2级的网友告诉我autoresetevent 把问题轻松解决了,线程之间切换耗时0毫秒,你当时也在那个帖子,也是说一大堆打击人的话,其实你也不知道autoresetevent这个东西,也是别人发出来了以后才去搜的吧?不然一句话就解决的问题,根本不会说那么多没用的了至于这个问题,我刚才特意下了个鲁大师,温度压力测试,并把100ms改为3ms,结果还是这样的结果明明自己不懂也就算了,还非要装出一副专家的样子,实践证明 你懂个屁的系统?或许你看了一些书,那也是书呆子,没有自己理解
另外,我从这个月开始学的c#,像什么变量之类的都没细看,用到了再去翻在线手册,以前就看过一些php代码,但是没具体做过东西,我觉得你们这些等级高的人压根和高手不搭边,想想也是,真是高手就不会那么多无用的话了,想让别人尊重你,你得有真材实料,而不是说一些空话,可笑的是 上个帖子里的那个人在不停地教我做人的道理,你跟他完全一个类型的,没真材实料 爱摆臭架子
他不是很好回答你问题了吗,你读不懂sp1234的话,证明你水平不够。
在csdn能像他这样回帖的几乎没有,人家写那么多,赚你点分有意思吗?
CPU温度跟多少毫秒有一毛钱关系??
在上个帖子里不停地教人做人道理的就是你这个垃圾CPU温度跟多少毫秒没有关系?那是你认可的sp1234说的,他说cpu占用一高就影响那个结果,事实证明 cpu占到快100%了都不影响
还有ManualResetEvent呢我懂还是不懂autoresetevent是一回事,你要不要用100个线程是另一回事算了,跟你没法沟通.我就当被狗咬了吧被狗咬了,回家上药就行了,也没必要再咬狗
他不回复我当然可以,回复我了 别说冷嘲热讽,就算骂我作贱我都可以,前提是或多或少的帮助到我,不然我凭什么被他踩脚下?
to Z65443344:自己说话前后矛盾,一会儿认同sp1234 ,一会儿又不认同了,我不屑回骂你了,呸
而且CPU占有率影响sleep的精度,和sleep影响CPU占有率,是一个问题???有没有逻辑概念啊我说话从来对事不对人
如果你认为我是在舔sp1234屁股,那也随你
就你也配谈素质?呸这是Z65443344在上个帖子里的冷嘲热讽,让我用异步,最后他自己又绕到多线程了,大家可以看看这个人有多恶心,不屑侮辱他,直接就想一口口水吐在他脸上
http://bbs.csdn.net/topics/391049291
谁告诉你CPU占用率高了温度会上升的
sp1234哪句话说过了,找出来看
兄弟啊,知识是无价的,能学到就是赚到,这里的人没有谁敢说自己什么都懂,请教问题放下身段会得到更多人的帮助,新来的被说教几下很正常的,混熟了也不会有人一直这样对你,.net技术更新很快,菜鸟老鸟都要保持持续的学习,纵使老鸟有个别问题没有说对也很正常,但不需要反讽,否则以后只能换个马甲来混了,那时还是得从被人说教开始,何必呢。
你是在混分吗?老是在教别人逃避问题,你解决不了也就算了,还装出一副高手的样子,这几天来csdn碰到多个你这种人了
我用多线程时,他洋洋洒洒一大篇,讽刺我在用多线程,还说让我用异步啥的,到最后还是用到了多线程,其实根本不需要知道异步是什么东西,我在网页的在线手册里也没有列出什么异步,但我那个帖子后来解决了问题,每个线程间相隔固定的时间 就是异步了,后来有个2级的网友告诉我autoresetevent 把问题轻松解决了,线程之间切换耗时0毫秒,你当时也在那个帖子,也是说一大堆打击人的话,其实你也不知道autoresetevent这个东西,也是别人发出来了以后才去搜的吧?不然一句话就解决的问题,根本不会说那么多没用的了至于这个问题,我刚才特意下了个鲁大师,温度压力测试,并把100ms改为3ms,结果还是这样的结果明明自己不懂也就算了,还非要装出一副专家的样子,实践证明 你懂个屁的系统?或许你看了一些书,那也是书呆子,没有自己理解
另外,我从这个月开始学的c#,像什么变量之类的都没细看,用到了再去翻在线手册,以前就看过一些php代码,但是没具体做过东西,我觉得你们这些等级高的人压根和高手不搭边,想想也是,真是高手就不会那么多无用的话了,想让别人尊重你,你得有真材实料,而不是说一些空话,可笑的是 上个帖子里的那个人在不停地教我做人的道理,你跟他完全一个类型的,没真材实料 爱摆臭架子
垃圾就是垃圾 社会底层的人 学了点C#毛皮就洋洋得意 武断的揣测别人的行为 要知道你自己是什么样的货色,你看别人也以为别人像自己一样, 简单的说 就是狗改不了吃屎 小人看谁都是小人!sp1234这人我知道 在社区热心的帮助过很多的人,你有啥资格龇牙,我就是一直潜水的人 今天看到 实在是忍不了
一个人可以愚蠢 但是不能不尊重知识。至于你的愚蠢问题 Stopwatch 和 DateTime.Now.Ticks 他们的实现原理 有本质上的不同
但是有什么样的不同 哈哈 我还真不告诉你 我不是你爹 没责任要教你聪明!
反正我是感觉那个东西不怎么准的 不过毫秒级别的 感觉还是可信的 精度在高一点 就感觉不可靠了
你可以试试 windows 的 那两个高精度计时的函数
http://blog.csdn.net/cloudhsu/article/details/5773043
很明显与CPU当前执行的多任务(线程)调度有关,CPU时间几乎不可能全部分配给你的线程(哪怕你提高线程优先级多运行一会儿也是一样)其实这个问题之前写测试例子的时候就发现了,后来去查了下源代码,根本的区别就是StopWatch用的是性能计数器
先看下StopWatch的静态构造
static Stopwatch()
{
if (!SafeNativeMethods.QueryPerformanceFrequency(out Frequency))
{
IsHighResolution = false;
Frequency = 0x989680L;
tickFrequency = 1.0;
}
else
{
IsHighResolution = true;
tickFrequency = 10000000.0;
tickFrequency /= (double) Frequency;
}
}Start()
的时候通过计数器获得实际的Ticks
if (IsHighResolution)
{
long num = 0L;
SafeNativeMethods.QueryPerformanceCounter(out num);
return num;
}
return DateTime.UtcNow.Ticks;好了,你可以结贴了
是啊 2年前的帖子都能挖出来 我觉得是 愚蠢&&笨 同时存在.....
Public Function GetTickCount() As Integer
Dim n As Integer
n = Environment.TickCount
If n >= 0 Then
Return n
Else
Return n And Int32.MaxValue '0,1,2,3,-3,-2,0 -> 0,1,2,3,0,1,2,3
End If
End Function
我是这么写的