AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TCP Indy Client/Server Performanceproblem
Thema durchsuchen
Ansicht
Themen-Optionen

TCP Indy Client/Server Performanceproblem

Ein Thema von alzaimar · begonnen am 16. Mai 2007 · letzter Beitrag vom 18. Mai 2007
Antwort Antwort
Seite 2 von 2     12   
Udontknow

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

Re: TCP Indy Client/Server Performanceproblem

  Alt 17. Mai 2007, 12:16
Hmmm... Gehen wir es mal genau durch.

Client: Sendet Query, führt GetTickcount durch und wartet auf Ergebnis (Aufruf von ReadStream).

Server: Wartet auf Anfrage. Bei Erhalt wird LoadData aufgerufen und das Ergebnis dann versendet.

Die Clientzeit enthält also die Zeit von LoadData + Versand.

Wenn du immer noch skeptisch bist: : Bau mal nach dem LoadData, aber vor dem Server-Gettickcount ein Sleep(10000) ein. Wetten, daß die Clientzeit um 10 Sekunden hochgeht?

Nur weil du auf Clientseite nun Readstream aufgerufen hast, bedeutet das doch noch lange nicht, daß der Server bereits mit dem Versand der Daten beschäftigt ist.

Cu,
Udontknow
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#12

Re: TCP Indy Client/Server Performanceproblem

  Alt 17. Mai 2007, 12:37
Ah, jetzt weiß ich, was Du meinst ...

Ich prüf das morgen nochmal.... Ich meine, das LoadData sind ca. 250ms, dann wären 5.5MB in ca 1300 ms beim Client... Auch zu lahm, aber besser.

Ich meld mich morgen
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#13

Re: TCP Indy Client/Server Performanceproblem

  Alt 18. Mai 2007, 12:27
So, nochmal geprüft. Die Nettoübertragung liegt bei 1300ms für 5.5MB, ergo 4.2MB/sec, und das ist immer noch zu wenig.

"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Udontknow

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

Re: TCP Indy Client/Server Performanceproblem

  Alt 18. Mai 2007, 12:57
Hallo!

Was für eine Art Stream nutzt du? TMemoryStream? Postest du bitte mal die neuen Sende- und Empfangsroutinen?

Bis dann,

Andreas
  Mit Zitat antworten Zitat
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
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz