当前位置: 技术问答>linux和unix
recv效率低下的问题
来源: 互联网 发布时间:2017-03-01
本文导语: 如题,我在 linux 下调用recv,执行2277000次,总耗时90139966微秒 平均下来是39微秒一次,这个效率貌似不是很高啊! 我对recv的socket设置了如下属性 int i_buffer_size = INT_MAX; if (setsockopt(sock, SOL_SOCKET, SO_RCVBUF, ...
如题,我在 linux 下调用recv,执行2277000次,总耗时90139966微秒
平均下来是39微秒一次,这个效率貌似不是很高啊!
我对recv的socket设置了如下属性
平均下来是39微秒一次,这个效率貌似不是很高啊!
我对recv的socket设置了如下属性
int i_buffer_size = INT_MAX;
if (setsockopt(sock, SOL_SOCKET, SO_RCVBUF,
(const char*)(&i_buffer_size), sizeof(int)) == -1) {
LOG_MSG("Socket Error: Adjust SO_RCVBUF failed.%s", strerror(errno));
return false;
}
if (setsockopt(sock, SOL_SOCKET, SO_SNDBUF,
(const char*)(&i_buffer_size), sizeof(int)) == -1) {
LOG_MSG("Socket Error: Adjust SO_SNDBUF failed.%s", strerror(errno));
return false;
}
int bOptVal = 1;
int bOptLen = sizeof(int);
if (setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE,
(const char*)&bOptVal,bOptLen) == -1) {
LOG_MSG("Socket Error: Adjust SO_KEEPALIVE failed.%s", strerror(errno));
return false;
}
if (setsockopt(sock,IPPROTO_TCP,TCP_NODELAY,
(const char*)&bOptVal,bOptLen) == -1) {
LOG_MSG("Socket Error: Adjust TCP_NODELAY failed.%s", strerror(errno));
return false;
}
if (setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,
(const char*)&bOptVal,bOptLen) == -1) {
LOG_MSG("Enable SO_REUSEADDR failed.%s", strerror(errno));
return false;
}
struct linger lgr;
memset(&lgr, 0x00, sizeof(struct linger));
lgr.l_onoff = 0;
if (setsockopt(sock, SOL_SOCKET, SO_LINGER,
(const char*)&lgr, sizeof(linger)) == -1) {
LOG_MSG("Socket Error: Adjust SO_LINGER failed.%s", strerror(errno));
return false;
}
// linux kernel introduced
bOptVal = 0;
if (setsockopt(sock, IPPROTO_TCP, TCP_CORK,
(const char*)&bOptVal, bOptLen) == -1) {
LOG_MSG("Socket Error: Adjust TCP_CORK failed.%s", strerror(errno));
return false;
}
// set socket to be non-blocking
int on = 1;
if (ioctl(sock,FIONBIO,(const char*)&on)
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
站内导航:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!