关于POSIX message queue的效率问题?

youngwolf 2011-09-30 12:02:46
在queue的大小一定的情况下,比如8k,
发送8k + 接收8k(循环2千万次)与
发送1k + 接收1k(循环2千万次)的执行时间居然几乎无差别!

为什么会这样?
...全文
139 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
mymtom 2011-10-06
  • 打赏
  • 举报
回复
首先申明,俺自己没有测试过,所以以下的说法都是猜测:
发送和接收都涉及到几个步骤, 以发送为例,大致分为以下三个步骤
1. 用户态下组织数据
2. 系统调用进入核心态
3. 核心态下将数据从用户空间拷贝到内核空间(放入队列)
所以总的时间消耗为三个步骤时间相加 t = t1 + t2 + t3;
其中系统调用进入核心态涉及上下文切换,是非常耗时的操作,比拷贝8K的数据消耗的时间大的多。
所以造成了发送1K数据和发送8K数据没使用的时间差不多。
ericming200409 2011-09-30
  • 打赏
  • 举报
回复
没有深究过,这个需要看看消息队列的实现,另外数据的移动也可能用到诸如DMA这样的技术

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧