.NET получает стоимость недвижимости Now - PullRequest
2 голосов
/ 05 июля 2011

Полагаю, бесполезный вопрос, но доступ к свойству DateAndTime.Now вычисляет каждый раз, когда я полагаю, текущая системная дата и время, верно?

Таким образом, было бы просто лучше отдать предпочтение:

Dim rightNow As Date = Now
For i As Integer = 0 To 1000
    If expiration < rightNow Then
        '   ...
    End If
Next

Более

For i As Integer = 0 To 1000
    If expiration < Now() Then
        '   ...
    End If
Next

Я прав?

Ответы [ 5 ]

4 голосов
/ 05 июля 2011

Это зависит от того, чего вы хотите достичь.

Если вам требуется, чтобы на всех итерациях использовалось наиболее точное время, то вариант 1 - это путь.

Если вам требуется, чтобы на всех итерациях использовалось одинаковое время, то вариант 2 - это путь.

Я бы не стал сильно беспокоиться о производительности вызова DateTime.Now, если вы уже не подтвердили, что это имеет значение для вашего приложения. Убедитесь, что ваша программа ведет себя правильно важнее.

4 голосов
/ 05 июля 2011

Вы были бы правы, вы бы хотели вызывать Now () столько раз, сколько необходимо.

3 голосов
/ 05 июля 2011

DateTime.Now выполняет большую обработку:

public static DateTime Now
{
  get
  {
        DateTime utcNow = DateTime.UtcNow;
        bool isAmbiguousDst = false;
        long ticks = TimeZoneInfo.GetDateTimeNowUtcOffsetFromUtc(utcNow, 
              out isAmbiguousDst).Ticks;
        long num = utcNow.Ticks + ticks;
        if (num > 3155378975999999999L)
        {
              return new DateTime(3155378975999999999L, DateTimeKind.Local);
        }
        if (num < 0L)
        {
              return new DateTime(0L, DateTimeKind.Local);
        }
        return new DateTime(num, DateTimeKind.Local, isAmbiguousDst);
  }
}

Преобразует utcNow в ваше местное время.Из-за этого призвание дорого.В зависимости от ваших требований, первый образец даст вам лучшую производительность.

2 голосов
/ 05 июля 2011

Это легко проверить.Вот средние значения времени на моем компьютере:

00:00:00.0000260

00:00:00.0015428

Это значимая разница?Только вы знаете, если это для вашего приложения.И, как уже отмечали другие, насколько точным нужно Now(), чтобы быть?

0 голосов
/ 05 июля 2011

Вы правы, однако правы теперь не будут правильными сейчас, как только вы выполнили задание ... если вы поймете, что меня беспокоит.

Мне было бы интересно посмотреть на некоторые моменты времени, чтобы увидеть, насколько велика разница между этими двумя методами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...