如何聚集一系列消息



我正在编写一个测试应用程序,用于对服务器进行压力测试。我有一份需要在给定时间间隔内发送的消息列表,但我感兴趣的不仅仅是以均匀的间隔发送,而是将消息"聚集"在一起以模拟突发。这将由UI中的滑块控制——一端是均匀的,另一端是"块状"的。有没有一种巧妙的数学方法可以做到这一点?

假设您有一个滑块,max,一个可以划分为N个部分的时间间隔T,以及您想要发送的消息总数M。然后在时分N,我会发送

(M/N)*(max(1-slider/max)+k*(slider/max)cosine(PI*N/T))

当滑块=0时,这将提供完全一致性,每个间隔都有M/N条消息到达。当滑块=最大值时,均匀性将完全衰减,您可以调整参数k以使结块更加极端。

以下是我认为可行的方法:

var rngClumpMax = new Random();
var clumpMin = 1;
var clumpMax = 1;
var clumpSize = 1;
clumpSize = rngClumpMax.Next(clumpMin, clumpMax);
while (true)
{
    List<string> messages = FetchMessages(clumpSize);
    if (messages.Count > 0)
    {
        SendMessages(messages);
    }
    else
    {
        break;
    }
}

滚动条可以设置clumpMax的值,因此可以从滚动条生成大小介于1和某个N值之间的块。

如果您有一个带有双滚动的控件,则可以设置偶数clumpMin,并在clumpMinclumpMax之间生成一个随机clumpSize

最新更新