Каков самый соответствующий тип счетчика производительности для измерения операционного времени?

Как Ken отметил, Вы хотите :language Примечание команды .

, что помещение этого в Вашем .vimrc или .gvimrc won’t помогают Вам с меню в gvim, так как их определение загружается однажды при запуске, очень вначале, и не перечитывается снова позже. Таким образом, действительно необходимо установить LC_ALL (или более конкретно LC_MESSAGES) в среде †“или в non-Unixoid системах (например, Windows), можно передать --cmd переключатель (который выполняет данную команду первая вещь, в противоположность -c опция):

gvim --cmd "lang en_US"

, Поскольку я упомянул, Вы, don’t должен использовать LC_ALL, который насильственно переключит все аспекты Вашей вычислительной среды. Можно сделать более детальный материал. F.ex., мои собственные настройки локали похожи на это:

LANG=en_US.utf8
LC_CTYPE=de_DE.utf8
LC_COLLATE=C

Это означает, что я получаю в основном английскую систему, но с немецкой семантикой для букв, за исключением того, что порядок сортировки по умолчанию является ASCIIbetical (т.е. вид кодовой точкой, не согласно соглашениям языка). Вы могли использовать различное изменение; см. man 7 locale для больше.

6
задан Muhammad Hasan Khan 10 December 2009 в 08:00
поделиться

4 ответа

Похоже, хороший кандидат на AverageTimer32 . См. этот ответ SO для получения более подробной информации.

7
ответ дан 16 December 2019 в 21:41
поделиться

Чтобы добавить к предыдущему ответу, есть очень хорошая статья о готовых и заказных счетчиках производительности в CodeProject ..

1
ответ дан 16 December 2019 в 21:41
поделиться

Обычно я использую секундомер, но я также использовал p / invoke для kernel32.dll:

  [DllImport("Kernel32.dll")]
  private static extern bool QueryPerformanceCounter(out long lpPerformanceCount);

  [DllImport("Kernel32.dll")]
  private static extern bool QueryPerformanceFrequency(out long lpFrequency);

У меня есть два метода, называемые Start () и Stop ():

  public void Start()
  {
     Thread.Sleep(0);
     QueryPerformanceCounter(out startTime);
  }


  public void Stop()
  {
     QueryPerformanceCounter(out stopTime);
  }

Для запроса продолжительность между вызовами Start () и Stop ():

  public double Duration
  {
     get
     {
        return (double)(stopTime - startTime)*1000 / (double)freq;
     }
  }

Обратите внимание, что freq определяется в конструкторе:

  public PerformanceTimer()
  {
     startTime = 0;
     stopTime = 0;

     if (QueryPerformanceFrequency(out freq) == false)
     {
        // not supported
        throw new Win32Exception();
     }
  }

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

Изменить: мне удалось найти исходный код из MSDN . Похоже, что с .Net 1.1 были внесены некоторые улучшения. Основная мысль заключается в том, что Microsoft утверждает , что этот метод обеспечивает точность наносекунд.

0
ответ дан 16 December 2019 в 21:41
поделиться

Ответ и вопрос:

Ответ: Низкие технологии мне подходят. Вам нужны микросекунды? Выполните цикл 10 ^ 6 раз и используйте часы.

Вопрос: Вы спрашиваете, потому что хотите сделать свой код быстрее? Затем рассмотрите это .

0
ответ дан 16 December 2019 в 21:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: