C测试发电机负载

时间:2012-04-04 13:57:17

标签: c

我正在尝试创建一个每秒发送100个呼叫的功能,并且每60秒增加到每秒200个呼叫。代码在

之下
for (i = 1; i <= 240; i++) {
        for (j = 0; j <= 100; j++) {
          send_tcp();
        }
        sleep(1);
        if(i %60 == 0) j=j+200;
        else j = j*1;
}

send_tcp()基本上只是打开一个套接字,并将TCP发送到某个地址。问题是,对于j = 100,它每秒都正确发送。但是,当j = 300时,发送300 tcp需要3秒,发送500 tcp请求需要10秒。基本上当j进入数字时,我无法获得j次/秒。

我认为这只是一个逻辑错误,但我无法弄清楚如何发送J调用/秒,无论j是多少......

赞赏任何回复

- 对不起我的英语不好,基本上我需要做一些&#34; send_tcp&#34; /秒。然而,当J变大时,看起来J的&#34; send_tcp&#34;不是/秒,但变成/ 3秒或更长时间..

2 个答案:

答案 0 :(得分:2)

是的,存在逻辑错误。您将循环计数器与您想要的迭代次数混淆。这就是你需要做的事情:

int n_calls = 100;
for (i = 1; i <= 240; i++) {
        for (j = 0; j < n_calls; j++) {
          send_tcp();
        }
        sleep(1);
        if(i %60 == 0) n_calls+=200;

}

答案 1 :(得分:1)

你总是在第二个for中从0到100循环,这是101次。您更改了J的值,但是当for启动时,它再次将J的值设置为0。如果我了解您要执行的操作,则会更改send_tcp增加时调用i的次数。然后,您需要将代码更改为:

count_j=100;
for (i = 1; i <= 240; i++) {
        for (j = 0; j <= count_j; j++) {
          send_tcp();
        }
        sleep(1);
        if(i %60 == 0) count_j+=200;

}

是你想要的吗?