亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Environment.TickCount與DateTime.Now

Environment.TickCount與DateTime.Now

躍然一笑 2019-11-12 13:05:13
可以Environment.TickCount用來計算時間跨度嗎?int start = Environment.TickCount;// Do stuffint duration = Environment.TickCount - start;Console.WriteLine("That took " + duration " ms");因為它TickCount是有符號的,并且將在25天后翻轉(要花費50天才能全部擊中32位,但是如果您想對數學有任何了解,就必須報廢有符號的位),這似乎太冒險了,無法使用。我正在使用DateTime.Now。這是最好的方法嗎?DateTime start = DateTime.Now;// Do stuffTimeSpan duration = DateTime.Now - start;Console.WriteLine("That took " + duration.TotalMilliseconds + " ms");
查看完整描述

3 回答

?
鴻蒙傳說

TA貢獻1865條經驗 獲得超7個贊

您為什么擔心結轉?只要您測量的持續時間在24.9天以內,并且您可以計算相對持續時間,就可以了。只要您只關心自己那部分運行時間(而不是直接在起點和終點進行小于或大于比較),系統就可以運行多長時間了。即這個:


 int before_rollover = Int32.MaxValue - 5;

 int after_rollover = Int32.MinValue + 7;

 int duration = after_rollover - before_rollover;

 Console.WriteLine("before_rollover: " + before_rollover.ToString());

 Console.WriteLine("after_rollover: " + after_rollover.ToString());

 Console.WriteLine("duration: " + duration.ToString());

正確打印:


 before_rollover: 2147483642

 after_rollover: -2147483641

 duration: 13

您不必擔心標志位。C#和C一樣,可以讓CPU處理。


在嵌入式系統中,我經常遇到這種情況。例如,我永遠不會直接比較beforerollover <afterrollover。我將始終執行減法來找到將過渡考慮在內的持續時間,然后根據該持續時間進行任何其他計算。


查看完整回答
反對 回復 2019-11-12
  • 3 回答
  • 0 關注
  • 1393 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號