linux下消息队列性能比较(SVr4, POSIX, 信号量模拟消息队列)

来源:互联网 发布:网络协议实践教程答案 编辑:程序博客网 时间:2024/06/14 06:48

    比较内容:main中创建一个接收线程,总共发送5*1024*1024*1024 =
5G的数据。发送5*1024*1024次,每次发送1024字节的数据。总共进行5次实验。

    实验数据:

    SVr4 消息队列:
    第一次:26.020s
    第二次:26.283s
    第三次:25.872s
    第四次:25.857s
    第五次:26.597s
    平均:26.126s

    POSIX 消息队列:
    第一次:25.273s
    第二次:26.141s
    第三次:25.214s
    第四次:25.240s
    第五次:25.504s
    平均:25.474s

    信号量模拟消息队列:
    第一次:23.916s
    第二次:23.936s
    第三次:23.973s
    第四次:24.137s
    第五次:23.923s
    平均:23.977s
     
    我的结论:
    既然POSIX消息队列要比SVr4消息队列要快,那么就用POSIX好了,除非要兼容旧的系统。POSIX比SVr4快了2.5%左右,可能是具体实现有差异吧。
    对于用信号量模拟的消息队列,主要是想验证一下手动实现的是不是会比库提供的消息队列要快很多,结果只比POSIX的快6.2%左右。
    最后,俺认为一般情况下要用POSIX的消息队列,旧系统用SVr4的消息队列。实在对性能需求很强烈的话就用信号量来模拟吧。

    实验程序:

SVr4:


POSIX:



信号量模拟消息队列:



原创粉丝点击