Почему попытка выполнить метод "x" раз в секунду дает результаты, которые указывают, что он работает больше / меньше раз x? - PullRequest
0 голосов
/ 10 декабря 2018

В настоящее время я пишу приложение Windows Form, в котором я подключаюсь к серверу и отправляю «x» «действия» в секунду на сервер, чтобы провести его стресс-тестирование.После остановки создается журнал .txt с подробным описанием количества отправленных действий и времени, когда оно было отправлено.

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

Например, при попытке отправить 50 действий в секунду несоответствия отсутствуют.При попытке 100 действий в секунду, только около 90 регистрируются в .txt, но при попытке 1000 действий регистрируется 1300.

Изначально я полагал, что приложение сталкивалось с проблемами производительности, в результате чего регистрировалось только 90 действий.при попытке отправить 100. Но я полагаю, что это не тот случай, когда при попытке отправки 1000 действий регистрируется 1300.Кроме того, я проверил проблемы с производительностью, используя Visual Studio Profiler, и ничего не заметил.

У кого-нибудь есть идеи по поводу того, что может быть причиной этого несоответствия?

КОД НИЖЕ:

DateTime startTime;
TimeSpan executionTIme;

while (sendingActions)
{
    startTime = DateTime.Now;
    action = CreateNewAction();
    if (action != null)
    {
        actionCount++;
        SendAction(action);

        //Write to log
        tw.WriteLine(DateTime.Now.ToString("h:mm:ss tt.fffffff") + " " + actionCount;
    }
    executionTime = DateTIme.Now.Subtract(startTime);


    //Sleeping thread to achieve "x" actions/second specified in ActionTime textbox
    Thread.Sleep(Convert.ToInt32(1 / (Convert.ToDouble(txtActionTime.Text)) * 1000 - executionTime.TotalMilliseconds));
}
...