试着向队列中发送100000条消息(每条925 Byte),速度大概是8k~9k条每秒钟(express模式发送);
而从队列中读的时候速度却大概只有5k条不到的样子,为什么会这样?读速度应该和发送速度不相上下才对啊!

解决方案 »

  1.   

    是同样条件下吗?读的时候如果用Receive,确实有删除的消耗
      

  2.   

    多谢sunrobust,是同样的条件,看了一个msmq的报告,express模式下读队列甚至还略高于写队列的速度,为什么我这里会有这么大差别,读队列代码如下:
    System.Collections.IEnumerator enumerator = queue.GetMessageEnumerator2();                ////foreach (System.Messaging.Message message in queue)
                    StreamWriter sw = new StreamWriter("f:\\ttt.txt");
                    while (enumerator.MoveNext())
                    {
                        sw.WriteLine(((ClientInfo)(queue.Receive(TimeSpan.FromTicks(11), MessageQueueTransactionType.Single).Body)).ToString());
                        i++;
                    }
      

  3.   

    读的时候可能有加锁同步等消耗!(从Receive只能取一次可知!)
    而写的时候只用往里面写??
    猜的。。呵呵,等待高手解答。
      

  4.   

    Recieve的同时,队列会删除该条记录,消耗当然有区别了。
      

  5.   

    谢各位!
    写的时候这样的:
    using (Message m = new Message())
    {
                        
          for (int i = 0; i < iterations; i++)
          {
               m.Formatter = new BinaryMessageFormatter(); //_fmt;
               m.Body = body;
               m.Label = "Test";
               m.Recoverable = false;
               que.Send(m);
                                                        
           }
    }
      

  6.   

    下面是微软测试结果:Metric/Message Size 10 bytes 1,000 bytes 2,000 bytes 4,000 bytesMessages per Second         14,130 11,300           9,685        7,590CPU Utilization           100% 100%           100%        100%

    Table 1 – Messages Sent, 1 Thread, Express ModeMetric/Message Size 10 bytes  1,000 bytes 2,000 bytes 4,000 bytesMessages per Second 13,700 11,400          10,150         8,230CPU Utilization           100% 100%          100%         100%Table 2 – Messages Received, 1 Thread, Express Mode结果里面看读队列速度和写速度(11400 vs 11300)基本一致,为什么我这里会有这么大差别?