为什么发送1000个字节的速度没有发送10000个字节的速度快
测试结果是 
10000 Byte 20ms
1000  Byte 270ms

解决方案 »

  1.   

    发送代码:
    var
      S:TMemoryStream;
    begin
      S:=TMemoryStream.Create;
      S.Size:=10000;
      S.Position:=0;
      TCP.WriteBuffer(S.Memory^,S.Size,true);
      S.Free;
      TCP.ReadLn;
    end; 接受代码
    AThread.Connection.ReadBuffer(buf[0],1000);
    AThread.Connection.WriteLn(); 测试1000的时候是150-200 ms
    测试10000的时候是10-20  ms各位可以测试一下,如果知道原因请告之。谢谢:)
      

  2.   

    接受buf大小和发送buf大小一样
    例如测试1000的时候
    S.Size:=1000;
    AThread.Connection.ReadBuffer(buf[0],1000);
    测试10000的时候
    S.Size:=10000;
    AThread.Connection.ReadBuffer(buf[0],10000);
      

  3.   

    我只有一台机器的没完整代码测试麻烦的Buffer的问题是有一定的影响的,但不至于差别10倍那么大吧
    http://lysoft.7u7.net
      

  4.   

    在Indy中,WriteBuffer时会自动创建一个内存流,用这个流来做缓存,等达到一定数量才发送。
    所以你可以试一下,发送10M的东西,两种方式应该一样快。
      

  5.   

    liangjinliang() 
    问题是我发送的绝对不要10M,而且不能累积到一定量再发
    谢谢你的回答。
     WGYKING(修罗是谁?!) 
    已经帮我解决。加个TCPCONNECtion.flushwritebuffer.
    结贴。