Einzelnen Beitrag anzeigen

Udontknow

Registriert seit: 17. Jun 2002
223 Beiträge
 
#15

Re: TCP Indy Client/Server Performanceproblem

  Alt 18. Mai 2007, 13:20
Hallo nochmal,

habe eine kleine Testanwendung geschrieben, um die Performance zu prüfen. Ist natürlich auch abhängig von der Hardware (Einstellung der Netzwerkkarten: 100 Mbit/s Vollduplex). Ergebnis:

Client und Server lokal: 10 MB in 234 Ticks. (42 MB/s)
Client auf anderer Maschine: 10 MB in 875 Ticks. (11 MB/s). Das ist nahe am Maximalwert (100 Mbit / 8 = 12.5 MByte).

Hier mal der Code, ist allerdings die neuere Indy-Version und muss dementsprechend angepasst werden...

Client:
Delphi-Quellcode:
procedure TForm67.Button1Click(Sender: TObject);
var Command:Integer;
var Stream:TMemoryStream;
var Size:Int64;
var c:cardinal;
begin
  Command:=0;
  TCPClient.Connect;
  TCPClient.IOHandler.Write(Command);

  Stream:=TMemoryStream.Create;
  try
    Size:=TCPClient.IOHandler.ReadInt64;
    Memo1.Lines.Add('Empfange '+IntToStr(Size)+' Bytes');
    Stream.Size:=Size;
    c := GetTickCount;
    TCPClient.IOHandler.ReadStream(Stream,Size);
    Memo1.Lines.Add(IntToStr(GetTickCount - c) + ' tics');

  finally
    Stream.Free;
  end;
end;
Server:
Delphi-Quellcode:
var Stream:TMemoryStream;
begin
  AContext.Connection.IOHandler.ReadInteger();
  Stream:=TMemoryStream.Create;
  try
    Stream.Size:=1024*1024*10;
    AContext.Connection.IOHandler.Write(Stream.Size);
    AContext.Connection.IOHandler.Write(Stream,Stream.Size);
    AContext.Connection.Disconnect;
  finally
    Stream.Free;
  end;
Bis dann,

Andreas
  Mit Zitat antworten Zitat