socket的吞吐量问题

想要高速传输并且CPU占用下, 一般都是异步模式的. 总之尽量让你的SOCKET尽量的发与尽量的收. 我的测试结果是在内部网络中测试的, 虽然单连接3.5MB/S还没有达到最高速度, 但是考虑到在公网上的速度瓶颈这已经足够了. 我在优化的过程中,发现这么几个地方对速度影响非常大: 1. malloc和memcpy. 尽量减少内存分配操作与内存COPY操作. 在内存节点管理方面尽量考虑到可复用. 减少内存移动和COPY的次数,特别是realloc的使用. 2. 使用异步模式. 这里的异步是指接收与处理的异步.这样可以尽量避免因为处理时间过长而带来网络IO的效率下降. 3. 使用非阻塞模式SOCKET, 每次不管发还是收一直都要执行到返回WSAEWOULDBLOCK为止, 这样可以最大限度的使用网络IO能力。 4. 减少线程上下文切换和同步锁带来的损失.能够避免用锁的地方尽量别用,或者考虑减少锁的争抢数,或者使用适当的线程调度模式,比如leader/follower. 基本上这是我在实现的过程中所总结出的经验. 另外有一个参考值可以提供给大家在内部局域网做测试的时候对比,那就是通常100M的网络传输文件的速度最快可以达到8.5MB/S左右, 由此可以知道自己的传输性能还有多大的提高空间.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值