0

私は c# を使用しており、(主に c++ を使用して) システム時刻の取得DateTime.Nowが遅くなる可能性があることを理解しています。タイマーを使用してこれを改善しようとしています/Stopwatch

class Time {
    private DateTime _starttime;
    private Stopwatch _timer;

    public Time() {
        _timer = new Stopwatch();
        _starttime = DateTime.Now; //trying to improve on multiple calls to `DateTime.Now` by only calling it once
        _timer.start;
    }

    public DateTime Now {
        get { return _starttime + _timer.Elapsed; }
    }

}

これで、私のクラスはメンバーを持ち、現在の時刻を知りたいときにいつでもprivate Time _time;呼び出すことができます。_time.Now;

現在の時刻は少しずれている可能性があります (遅延を測定しようとしていて、数秒以上遅れているかどうかを知りたい) が、現在の時刻を頻繁に確認できるようにしたい多数のシステムコールによるパフォーマンスへの影響はありません。

いくつかのパフォーマンス テストの作成を開始している間、誰かがより良い/別の方法を知っているかどうか疑問に思っていました (または、私がここで完全にずれているかどうかを誰かが知っているかもしれません)。

4

2 に答える 2

2

気になったのでちょっと調べてみました。DateTime.Nowを内部的に呼び出しDateTime.UtcNow、次に内部 CLR メソッドを呼び出します。

DateTime.GetSystemTimeAsFileTime()

ここにメソッドのMSDN ドキュメントがあり、ここにスタックオーバーフローの投稿があり、詳細が記載されています。

于 2013-10-15T21:58:32.123 に答える