[C/C++] - Performanceproblem mit TIdHTTP (Indy-Client)

Gefunden: 24.01.2007 17:01:32
Quelle: RR:Board
Hi, ich mal wieder .. xD Habe ein kleines Performanceproblem mit der Indy-Client-Komponente TIdHTTP (Indy 9). Da ich mich nur wenig mit den Indy-Komponenten auskenne und selten damit arbeite, wollt ich hier mal nachfragen ob jemand weiß wie man die Performance verbessern kann. Das Proggi was ich grad bastel hat atm 30 Threads, welche alle den gleichen Link mit unterschiedlichen Variablen aufrufen. Beispiel (für 2 Threads) Code: --------- http://www.test.de/index.php?action=test&set=n1 http://www.test.de/index.php?action=test&set=px (http://go.raidrush.to/?url=http://www.test.de/index.php?action=test&set=px) --------- Jeder Thread hat seine eigene TIdHTTP-Komponente - also dürfte das nicht das Problem sein. Beispiel: Code: --------- TIdHttp01->Get(...); TIdHttp02->Get(...); ... --------- Wenn ich einen Thread laufen lasse, ruft dieser den Link durchschnittlich 2,7 mal pro Sekunde auf. (Hab ne Anzeige drinne) => dabei hab ich pro Sekunde nen Upload von 5 bit und nen download von 15 bit. *Jetzt zum Problem:* Je mehr Threads ich nutze, umso geringer ist der Durchschnittswert pro Sekunde für den einzelnen Thread. => theoretisch: 1 Thread = 2.7 10 Threads = 27 => praktisch: 1 Thread = 2.7 10 Threads = 21 (Werte immer pro Sekunde) bei 30 komm ich so gradmal auf 40 / sek. ... :( Außerdem schwankt der Download / Upload mit zunehmender Threadzahl immer mehr! Wichtig: Die Prozessorauslastung ist die meiste Zeit auf 0% und schwankt teilweise bis max. 3%! --- Ich hoffe ihr versteht was ich meine!? ^^ *Meine Fragen sind also:* - Liegt das Performanceproblem an der Indy-Komponente oder liegt es einfach nur an den Threads (mehr als 16 werden ja, zumindest bei größeren Aufgaben, nicht empfohlen.)? - Welche Möglichkeiten gibt es um die Performance vielleicht noch etwas zu verbessern oder das Problem ganz zu lösen? THX für jede Hilfe - Bewertung ist selbstverständlich! MfG bonsai.
Weiter lesen

Kee-King
Meine persönliche Startseite