Zitat von
Vjay:
Würde es nicht sogar schon die CPU-Leistung killen soviele Daten zu erzeugen bzw an die Netzwerkkarte zu transferieren?
Stell mir gerade ne whileschleife mit
indy.sendbuffer oder so vor ^^ die so 100mb die sekunde rüberschieben soll.
Die Daten müssen ja nicht
erzeugt werden. Man braucht ja nur einmal einen Buffer mit 32kB reservieren und diesen Buffer unverändert mit
indy.
WriteBuffer rausblasen.
Natürlich braucht dies eine gewisse CPU-Leistung, aber man kann sich ja auch nicht duschen und verlangen nicht nass zu werden.
Delphi-Quellcode:
// Hier die Quick & Dirty Messung
// bei meinem 10MBit-Ethernet komme ich auf einen Durchsatz von ~ 1100 kByte/s
procedure TForm1.Button1Click(Sender: TObject);
var
t1, t2 : TDateTime;
bc : Integer;
var
i, kb, bufsize : Integer;
s : string;
begin
bufsize := 8096;
SetLength(s, bufsize);
bc := 100;
IdTCPClient1.Connect;
t1 := Now;
for i := 1 to bc do
begin
IdTCPClient1.WriteBuffer(s[1], bufsize);
end;
IdTCPClient1.Disconnect;
kb := bufsize div 1024 * bc; // Anzahl in kilobytes
t2 := Now-t1;
t2 := t2 * 60.0 * 60.0 * 24.0; // Zeit in Sekunden
Edit1.Text := IntToStr(Round(kb / t2));
end;