我们看到ZeroMQ上有一个奇怪且无法解释的现象,Windows 7通过TCP发送消息.(或者inproc,因为ZeroMQ在Windows内部使用TCP进行信令).
这种现象是前500条消息越来越慢,延迟越来越慢.然后,除了由CPU /网络争用引起的峰值之外,延迟下降和消息一直快速到达.
这里描述了这个问题:https://github.com/zeromq/libzmq/issues/1608
它始终是500条消息.如果我们发送没有延迟,那么消息被批处理,所以我们看到这个现象延伸了几千个发送.如果我们在发送之间延迟,我们会更清楚地看到图表.即使在发送之间延迟多达50-100毫秒也不会改变事情.
邮件大小也无关紧要.我已经测试了10字节消息和10K消息,结果相同.
最大延迟始终为2毫秒(2,000 usec).
在Linux机器上,我们没有看到这种现象.
我们想要做的是消除这个初始曲线,因此消息与正常的低延迟(大约20-100 usec)保持新的连接.
更新:该问题不会在Windows 10和8上显示.它似乎只发生在Windows 7上.
哪个被认为是更好的风格?
int set_int (int *source) {
*source = 5;
return 0;
}
int main(){
int x;
set_int (&x);
}
Run Code Online (Sandbox Code Playgroud)
要么
int *set_int (void) {
int *temp = NULL;
temp = malloc(sizeof (int));
*temp = 5;
return temp;
}
int main (void) {
int *x = set_int ();
}
Run Code Online (Sandbox Code Playgroud)
为了获得更高级别的编程背景,我得说我更喜欢第二个版本.任何提示都会非常有帮助.还在学习C.