「.NETのTimeSpan型でマイクロ秒やナノ秒を取得する」の版間の差分
ナビゲーションに移動
検索に移動
imported>Administrator |
|||
(他の1人の利用者による、間の1版が非表示) | |||
3行目: | 3行目: | ||
最小単位は100ナノ秒。これは「1tick = 100ナノ秒」という.NETの仕様による<ref>https://docs.microsoft.com/en-us/dotnet/api/system.datetime.ticks?redirectedfrom=MSDN&view=netframework-4.7.2</ref>。つまり1tickを10倍して1マイクロ秒としても良さそうに感じる。しかし「マイクロソフト純正は1tick = 100ナノ秒に限る」というものであり、[[Mono]]などの互換環境では不確定なのでTotalMillisecondsから計算するほうが望ましい。ということらしい。 | 最小単位は100ナノ秒。これは「1tick = 100ナノ秒」という.NETの仕様による<ref>https://docs.microsoft.com/en-us/dotnet/api/system.datetime.ticks?redirectedfrom=MSDN&view=netframework-4.7.2</ref>。つまり1tickを10倍して1マイクロ秒としても良さそうに感じる。しかし「マイクロソフト純正は1tick = 100ナノ秒に限る」というものであり、[[Mono]]などの互換環境では不確定なのでTotalMillisecondsから計算するほうが望ましい。ということらしい。 | ||
+ | |||
+ | <source lang="csharp"> | ||
+ | public static void Main(string[] args) | ||
+ | { | ||
+ | var stopwatch = new Stopwatch(); | ||
+ | stopwatch.Start(); | ||
+ | System.Threading.Thread.Sleep(1000); | ||
+ | stopwatch.Stop(); | ||
+ | |||
+ | // TimeSpanのTotalMillisecondsプロパティはdouble型であり | ||
+ | // 小数点以下にミリ秒より小さい数字がいる。 | ||
+ | TimeSpan timeSpan = stopwatch.Elapsed; | ||
+ | Console.WriteLine( "秒 (s ): {0}", timeSpan.TotalSeconds); | ||
+ | Console.WriteLine(" ミリ秒 (ms): {0}", timeSpan.TotalMilliseconds); | ||
+ | Console.WriteLine("マイクロ秒 (us): {0}", timeSpan.TotalMilliseconds * 1000); | ||
+ | Console.WriteLine(" ナノ秒 (ns): {0}", timeSpan.TotalMilliseconds * 1000 * 1000); | ||
+ | } | ||
+ | </source> | ||
== 参考文献 == | == 参考文献 == |
2018年8月28日 (火) 01:20時点における最新版
.NETのTimeSpan型でマイクロ秒やナノ秒を取得する。 TimeSpanのTotalMillisecondsプロパティはdouble型であり小数点以下にミリ秒より小さい数字がいる。
最小単位は100ナノ秒。これは「1tick = 100ナノ秒」という.NETの仕様による[1]。つまり1tickを10倍して1マイクロ秒としても良さそうに感じる。しかし「マイクロソフト純正は1tick = 100ナノ秒に限る」というものであり、Monoなどの互換環境では不確定なのでTotalMillisecondsから計算するほうが望ましい。ということらしい。
public static void Main(string[] args)
{
var stopwatch = new Stopwatch();
stopwatch.Start();
System.Threading.Thread.Sleep(1000);
stopwatch.Stop();
// TimeSpanのTotalMillisecondsプロパティはdouble型であり
// 小数点以下にミリ秒より小さい数字がいる。
TimeSpan timeSpan = stopwatch.Elapsed;
Console.WriteLine( "秒 (s ): {0}", timeSpan.TotalSeconds);
Console.WriteLine(" ミリ秒 (ms): {0}", timeSpan.TotalMilliseconds);
Console.WriteLine("マイクロ秒 (us): {0}", timeSpan.TotalMilliseconds * 1000);
Console.WriteLine(" ナノ秒 (ns): {0}", timeSpan.TotalMilliseconds * 1000 * 1000);
}