Ladezeit messen
-
Hi @ll,
bin ziemlich neu in der C++-Welt und hoffe daher, dass ihr mir den Kopf nicht gleich abreisst

Ich habe vor, mir mein eigenes kleines Messungstool für Webseiten zu basteln.
Die Idee: Ich gebe z.B. via CIN eine Domain an (www.google.de) und messe die Zeit die vergeht ab Seitenaufruf bis zur vollständigen Server-Antwort. Wie lange dann der Browser noch benötigt die entsprechenden Informationen zu verarbeiten, ist eigentlich egal.
Ich bin in diesem Kontext nun schon vermehrt auf den Begriff ShellExecute gestossen und habe daher mal ein ganz simples Skript geschrieben, welches lediglich die Seite aufruft:
#include <iostream> #include <windows.h> #include <shellapi.h> using namespace std; int main () { ShellExecute(NULL, "open", "http://www.google.de", NULL, NULL, SW_SHOW); return 0; }Dies funktioniert auch so, ist ja kein Hexenwerk.
Meine Vorstellung: In Zukunft möchte ich ggfs. mehrere Seiten sequentiell überwachen (die werde ich wahrscheinlich aus einem File einlesen). Daher möchte ich die Messung bei Seitenaufruf starten, bei vollständiger Server-Antwort beenden und anschliessend mit der nächsten URL fortfahren. Die Messungen gebe ich entweder im CMD aus oder schreibe Sie in ein File (das zweite wohl eher).
Wichtig wäre natürlich, dass die Seite nicht im Browser geöffnet wird, sonst macht es mir ja bei jedem Run x Seiten auf
Habt ihr da eine Idee/Tipps für mich? Bin um jeden Denkanstoss froh

Greetings,
Neme
-
Das einzige was du da machst ist Windows sagen "hey, mach mal irgendwas mit diesem String" und Windows merkt dass es eine URL ist und ruft das Standardprogramm mit der URL als Parameter auf. Zeit messen geht so natürlich gar nicht.
Guck dir mal Sockets an, dann kannst du selbst eine HTTP-Get Anfrage senden und die Zeit messen bis die ganze Seite bei dir ist. Aber ich sag's mal so: Die HTTP-Seite selbst ist bei den meisten Seiten mehr oder weniger instant da, die Seiten die dir im Browser langsam vorkommen sind das üblicherweise deshalb, weil sie irgendwelche Medien-Inhalte im Hintergrund nachladen. Um die aber alle raus zu parsen und dann wieder zu testen wie schnell die antworten etc. müsstest du aber schon einiges an Aufwand betreiben denke ich (quasi einen eigenen Browser schreiben, nur ohne Anzeige).
-
Ich denke mal, dass man das mit der Libcurl gut lösen kann. Mit der Lib kann man HTTP-Requests usw versenden. In deinem Fall starteste den Timer, sendest das Request und wenns fertig ist, stoppste den.