我正在编写一个Windows窗体应用程序,我连接到服务器并向服务器发送“x”“动作”,以便对其进行压力测试 . 停止后,将创建一个.txt日志,详细说明发送的操作数和发送时间 .

我试图通过比较1秒后日志中的计数器之间的差异来验证结果 . 但是,在执行此操作时,我发现日志文件中的内容与要发送的操作的预期数量之间存在不一致 .

例如,当尝试发送50个动作/秒时,没有不一致 . 尝试100次/秒的操作,只有大约90个被记录在.txt中,但是尝试1000次操作,1300次被记录 .

最初我认为应用程序遇到了性能问题,导致在尝试发送100时只记录了90个操作 . 但我认为并非如此,因为尝试发送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));
}