Найдено результатов: 4

Надежный таймер в консольном приложении

Я знаю, что в .NET есть три типа таймеров (см. сравнение классов таймеров в библиотеке классов фреймворка .NET ). Я выбрал потоковый таймер, поскольку другие типы могут дрейфовать, если основной поток занят, и мне нужно, чтобы это было надежно.

Способ работы этого таймера в управлении таймером помещается на другой поток, поэтому он всегда может тикать вместе с работой, начатой в Родительском потоке, когда он не занят.

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

Я попробовал добавить цикл while true , но тогда основной поток слишком занят, когда таймер действительно выключается.

c#   .net   vb.net   timer    

489   2   16:03, 1st July, 2020


Гарантируется ли разрешение gettimeofday() в микросекундах?

Я портирую игру, которая изначально была написана для Win32 API, на Linux (ну, портирую порт OS X порта Win32 на Linux).

Я реализовал QueryPerformanceCounter , дав uSeconds с момента запуска процесса:

BOOL QueryPerformanceCounter(LARGE_INTEGER* performanceCount)
{
    gettimeofday(&currentTimeVal, NULL);
    performanceCount->QuadPart = (currentTimeVal.tv_sec - startTimeVal.tv_sec);
    performanceCount->QuadPart *= (1000 * 1000);
    performanceCount->QuadPart += (currentTimeVal.tv_usec - startTimeVal.tv_usec);

    return true;
}

Это, в сочетании с QueryPerformanceFrequency() , дающим постоянную 1000000 в качестве частоты , хорошо работает на моей машине, давая мне 64-битную переменную, которая содержит uSeconds с момента запуска программы.

Так это портативное устройство? Я не хочу обнаружить, что он работает по-другому, если kernel был скомпилирован определенным образом или что-то подобное. Однако меня вполне устраивает, что он не переносится на что-то другое, кроме Linux.

linux   winapi   visual-c++   unix   timer    

540   10   16:03, 1st July, 2020


Модульное тестирование приложения на основе таймера?

В настоящее время я пишу простое мини-приложение на основе таймера в C#, которое выполняет действие n раз каждые k секунд.
Я пытаюсь принять тестовый стиль разработки, поэтому моя цель-модульное тестирование всех частей приложения.

Итак, мой вопрос: есть ли хороший способ модульного тестирования класса на основе таймера?

Проблема, как я вижу, заключается в том, что существует большой риск того, что выполнение тестов займет неудобно много времени, поскольку они должны ждать так и так долго, чтобы желаемые действия произошли.
Особенно если вы хотите получить реалистичные данные (секунды), а не использовать минимальное разрешение по времени, разрешенное фреймворком (1 мс?).
Я использую макет объекта для действия, чтобы зарегистрировать количество раз, когда действие было вызвано, и так, чтобы действие практически не занимало времени.

c#   .net   unit-testing   timer    

475   4   09:37, 26th August, 2020


Является ли DateTime.Now лучшим способом измерения производительности функции?

Мне нужно найти узкое место и нужно как можно точнее измерить время.

Является ли следующий фрагмент кода лучшим способом измерения производительности?

DateTime startTime = DateTime.Now;

// Some execution process

DateTime endTime = DateTime.Now;
TimeSpan totalTimeTaken = endTime.Subtract(startTime);

c#   .net   performance   datetime   timer    

545   15   05:46, 28th August, 2020