看流星社区

 找回密码
 注册账号
查看: 2207|回复: 3

[易语言源码] TCP组件接收效率补丁2更新了,TCP组件接收10MB只需80毫秒!

[复制链接]

该用户从未签到

发表于 2015-6-25 10:53:47 | 显示全部楼层 |阅读模式
TCP组件接收效率补丁2,优化核心库客户服务器大数据接收速度!

客户和服务器组件调用WSAAsyncSelect来获得通知给窗口,从而自动设为非阻塞方式。
当收到可读的通知消息时,首先调用ioctlsocket传递FIONREAD获得缓存区中当前收到的数据大小,并按照该大小调用recv。
但第一次recv调用完后不立即返回,而是继续调用recv传递1024字节大小的缓冲区,循环直到recv不返回数据为止。
而之所以单机发几MB都要好几秒,正是因为每次都传递1024字节大小的缓存区,假设10MB数据要分10240次调用recv,
慢就慢在要将1024字节的数据相加10240次。

该补丁就是将recv的1KB改为了默认1MB(可通过变量动态修改),但接收缓存从原先8K改为128K(单机测试下来128K最合适)。

补丁前发送10M数据用时5秒半,补丁后用时80毫秒左右。

(硬编码补丁必须独立或静态编译,测试E5.2可用)

游客,如果您要查看本帖隐藏内容请回复

该用户从未签到

发表于 2015-11-29 10:31:52 | 显示全部楼层
支持下。谢谢分享

该用户从未签到

发表于 2017-11-4 10:20:46 | 显示全部楼层
不错         
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-4-25 04:04

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表