「.NETのTimeSpan型でマイクロ秒やナノ秒を取得する」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
imported>Administrator
(ページの作成:「.NETのTimeSpan型でマイクロ秒やナノ秒を取得する。 TimeSpanのTotalMillisecondsプロパティはdouble型であり小数点以下にミリ秒より小さ...」)
 
 
(他の1人の利用者による、間の2版が非表示)
1行目: 1行目:
 
.NETのTimeSpan型でマイクロ秒やナノ秒を取得する。
 
.NETのTimeSpan型でマイクロ秒やナノ秒を取得する。
 
TimeSpanのTotalMillisecondsプロパティはdouble型であり小数点以下にミリ秒より小さい数字がいる。
 
TimeSpanのTotalMillisecondsプロパティはdouble型であり小数点以下にミリ秒より小さい数字がいる。
最小単位は100ナノ秒。これは「1tick = 100ナノ秒」という.NETの仕様による<ref>https://docs.microsoft.com/en-us/dotnet/api/system.datetime.ticks?redirectedfrom=MSDN&view=netframework-4.7.2</ref>。
 
  
<syntaxhighlight lang="csharp">
+
最小単位は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)
 
public static void Main(string[] args)
 
{
 
{
19行目: 20行目:
 
     Console.WriteLine("    ナノ秒 (ns): {0}", timeSpan.TotalMilliseconds * 1000 * 1000);
 
     Console.WriteLine("    ナノ秒 (ns): {0}", timeSpan.TotalMilliseconds * 1000 * 1000);
 
}
 
}
</syntaxhighlight>
+
</source>
  
 
== 参考文献 ==
 
== 参考文献 ==
25行目: 26行目:
  
 
[[category: .NET]]
 
[[category: .NET]]
 +
<references />

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);
}

参考文献[編集 | ソースを編集]