Hallöchen!
Ich hab da ein kleines Problem mit den Indy-Komponenten.
Ich wollt nämlich mal nen Benchmark schreiben, der einfach nur Zufallsdaten überträgt. Diese "kopier mal was übers Netz" Lösungen sind ja nix, da die Festplatte bremsen könnte.
Jetzt hab ich mal die Indy-Komponenten hergenommen, und schick mal wild drauf los. Der Server macht im Prinzip das hier:
Delphi-Quelltext
1: 2: 3:
| while AContext.Connection.Connected do begin AContext.Binding.Send(Data,0,BlockSize); end; |
Der Client das hier:
Delphi-Quelltext
1: 2: 3: 4:
| for i:=0 to BlockCount-1 do begin ClieSock.Socket.ReadBytes(Data,BlockSize,false); traffic:=traffic+BlockSize; end; |
Bin nicht happig auf den Quellcode, aber ganze programme reinpasten verwirrt nur.
Naja, funktioniert auch so weit, der Client holt einen Haufen Daten, und trennt die Verbindung danach wieder.
Jetzt hab ich mal mitgemessen, für 128 MB braucht das Ding ca. 15 Sekunden, kommt also ca. auf 65 MBit. Nuja, das wär ja nicht so schlecht, für ne 7 Euro Netzwerkkarte (habs nur mit meinem Rechner als Server UND Client getestet), aber das Loopback Device liefert genau die gleichen Werte. Und das wundert mich jetzt schon.. ich hätt da folgende Vorschläge:
1) Mein Programm ist so lahm. Glaub ich gern, weil ichs grad erst geschrieben hab, und noch nichts getunt hab. Aber so viel Code ist in der Schleife ja nicht drin.
2) Indy ist so "lahm". Wär blöd, möcht das jetzt nicht noch mit Winsock nachprogrammiern.
3) Windows passt bei 100 MBit NICs die Geschwindigkeit vom Loopback Device an. Wüsst zwar keinen Grund dafür, aber naja, möglich wärs.
Ich bin ja für Punkt 1, weil die CPU auslastung 100% ist, der Client hat ca. zwei Drittel, der Server ein Drittel. Die Frage ist jetzt, ob ich so mies programmiere, oder ob meine Hardware schlicht nicht zu mehr als 70 MBit fähig ist.
CPU: Celeron Tualatin 1300 MHz, i815 Mainboard, 384 MB Ram.
Hm, ich versuchs jetzt mal zwischen 2 Rechnern zu testen. Da teilt sich wenigstens die CPU-Last auf. Würd mich aber trotzdem über Antworten freuen.
EDIT: (P4)Celeron 2400 mit Onboardchipsatz schafft über die NIC 55MBit, übers Loopback 75 MBit. (Der is aber auch nicht wesentlich schneller als der fetzige Tualatin)