为什么tcp的cpu占用率远低于udp的占用率,同样的速率情况下

Oversense 2010-06-26 12:02:51

tcp,udp程序都是特别订制的最简单的程序,不需要怀疑应用层效率的问题

按道理 tcp 要做的事情比udp要多一些哟,反而cpu占用率低呢,

有谁知道这是怎么回事呢?
...全文
224 点赞 收藏 12
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
tianhaixin 2010-06-30
学习……
回复
悟迟 2010-06-30
[Quote=引用 10 楼 wwwllg 的回复:]

首先,tcp是在内核完成,统计cpu时,是统计不到tcp实现的占用的cpu
只能统计API调用占用的cpu.比如,send,sendto等。

第二,缓冲区大小不一样,缓冲区处理,tcp都在底层,不占cpu.
而udp,要处理很多事情,如果你的包设置的很小,比如小于1k,那么同样的数据量,udp显然要多得很多。

如果在局域网,可以加大发送的大小,比如,32k一发,会节省很多cpu.……
[/Quote]我期待的高人出现了,
回复
UDX协议 2010-06-29
首先,tcp是在内核完成,统计cpu时,是统计不到tcp实现的占用的cpu
只能统计API调用占用的cpu.比如,send,sendto等。

第二,缓冲区大小不一样,缓冲区处理,tcp都在底层,不占cpu.
而udp,要处理很多事情,如果你的包设置的很小,比如小于1k,那么同样的数据量,udp显然要多得很多。

如果在局域网,可以加大发送的大小,比如,32k一发,会节省很多cpu.
回复
Conry 2010-06-29
说明你的udp代码写的有问题
回复
周药师 2010-06-29
TCP要经过3次握手完成一个业务流程
理论上TCP比UDP耗资源、而且也没有UDP传输快
回复
xgPaul 2010-06-29
可能与UDP发包的确认机制有关
回复
Oversense 2010-06-26
我实测的啊, 要测试, 才有发言权哟, 我在linux,window@ia32 linux@arm 等各种环境下都测试过的
回复
Squall_zy 2010-06-26
你依据什么说这话的?
回复
hastings 2010-06-26
mark..我的回复大家可以无视...直接看下一楼的...
回复
Oversense 2010-06-26
[Quote=引用 3 楼 wozhaolala 的回复:]
引用 2 楼 oversense 的回复:

我实测的啊, 要测试, 才有发言权哟, 我在linux,window@ia32 linux@arm 等各种环境下都测试过的
不光要测试,还得方法对,才有发言权,不过,我都没测试,所以我就不评论了,看楼下的
[/Quote]
回复
lijianli9 2010-06-26
我也期待看过TCP,UDP实现的达人来讲下。
回复
悟迟 2010-06-26
[Quote=引用 2 楼 oversense 的回复:]

我实测的啊, 要测试, 才有发言权哟, 我在linux,window@ia32 linux@arm 等各种环境下都测试过的
[/Quote]不光要测试,还得方法对,才有发言权,不过,我都没测试,所以我就不评论了,看楼下的
回复
发帖
网络编程
创建于2007-09-28

1.8w+

社区成员

VC/MFC 网络编程
申请成为版主
帖子事件
创建了帖子
2010-06-26 12:02
社区公告
暂无公告