Performence
-
Hallo,
durch raten von anderen Programmieren, bin ich vor 2-3 Tagen zu MVC++ gewechselt. Es sollte erhebliche Performence Verbesserungen geben im gegensatz zu VBS! Jetzt habe ich ein Skript geschrieben was erst mal grob die aufgaben durchführt, wie ich es gern hätte. Irgendwie ist es trotzdem genauso langsam oder sogar langsamer! Wäre nett wenn ihr euch mein Script mal anschauen könnt, und mir dann vllt sagen was man performencenstechnisch ändern sollte, damit das später auch schneller läuft!
Würd mich super freuen und ich bedanke mich jetzt schonmal für die Hilfe die kommen wird.

Gruss
Stormrider#include <iostream> #include <fstream> #include <string> #include <sys/stat.h> using namespace std; char const *FILENAME = "Test.txt"; char const *FILENAME2 = "perf.log"; int main(){ int size; struct stat attribut; //Schreiben - inkl. DOWhile Schleife ofstream fwrite(FILENAME); do { fwrite << "Hallo" << endl; size = stat(FILENAME, &attribut); } while(attribut.st_size <= 100000); //Lesen ifstream fread(FILENAME); std::string Lesen; getline(fread,Lesen); cout << Lesen << endl; //Schreiben2 ofstream fopen(FILENAME2); fopen << "Uhrzeit: " <<endl; }
-
Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Was soll dein Programm denn überhaut machen?
-
Also später soll die .exe datei auf den Servern ausgeführt werden. Im Skript kommt dann noch eine Art For schleife dazu, und eine Sleep Funtkion die das ganze immer 10min ruhen lässt bevor er wieder von vorne anfängt.
Ganz allgemein soll man damit sehen können ob die Server an verschiedenen Zeiten unterschiedlich arbeiten. Ob mal langsamer oder schneller usw.
Bau mal son eine Struktur wie ich sie mir gedacht habe mit allen drum und dran wie es am ende soll
#include Datein Konstante Textdatei1 = "1.txt"; Konstante Textdatei2 = "2.txt"; int i = 0; int main(){ for (i=0; i<2; i++){ Datum/Uhrzeit1 Textdatei 1 öffnen Do{ Was rein schreiben }while (bis die datei z.B. 10MB groß ist) Textdatei 1 schließen Datum/Uhrzeit2 Datum/Uhrzeit3 Textdatei 1 öffnen Lesen Textdatei 1 schließen Datum/Uhrzeit4 Textdatei 2 öffnen Datum/Uhrzeit 1-4 schreiben Textdatei 2 schließen Sleep (10min) } }
-
Und was genau willst du testen? Verfügbare CPU Zeit, lineares Schreiben/Lesen auf die/von der Festplatte, ...?
Wäre nämlich wichtig. Wenn man das Programm soweit optimiert dass es schnellstmöglich durchläuft testet es deswegen nicht unbedingt das was du getestet haben willst.
Wenn du z.B. einen Webserver testen willst macht es meist auch Sinn eine typische Datei von dem runterzuziehen, und zu gucken wie lange das dauert. Wenn du die Geschwindigkeit der Verbindung dabei NICHT mittesten willst, dann lässt du das Programm eben lokal laufen. Wenn du dynamische Seiten da drauf liegen hast (PHP/ASP/...) dann machst du die Testseite eben auch dynamisch.
Wenn du nen Datenbankserver testen willst dann schick dem halt ne typische Anfrage und guck wie lange das dauert.
Etc.
-
Also damit sollen die Terminalserver getestet werden, damit man sehen kann ob sie über Tag verteilt immer gleich schnell sind beim schreiben und lesen oder ob es Zeiten gibt, wo sie langsamer werden.
Das war so meine Aufgabe die ich bekommen habe. Falls es noch nicht detailiert genug ist, frag ich gerne meinen Betreuer einmal nach.
Gruss Stormrider
-
performencenstechnisch
bitte was?

also du weisst noch nicht genau was du machen willst, aber du moechtest jetzt schon mal wissen, wie's schneller geht?...
-
Stormrider666 schrieb:
Also damit sollen die Terminalserver getestet werden, damit man sehen kann ob sie über Tag verteilt immer gleich schnell sind beim schreiben und lesen oder ob es Zeiten gibt, wo sie langsamer werden.
Das war so meine Aufgabe die ich bekommen habe. Falls es noch nicht detailiert genug ist, frag ich gerne meinen Betreuer einmal nach.
Gruss Stormrider
in dem fall wäre es sinnvoller, die last auf den terminal servern mitzuloggen und wie schnell die anfragen abgearbeitet werden.
einfach nebenher mal ne datei zu schreiben und zu lesen ist nicht besonders aussagekräftig.
-
Also linear write (linear read) testet man am besten mit einem Puffer > 1MB. Den klopfst du dann ein paar mal mittels ::WriteFile (::ReadFile) raus, und fertig. Die stdlib würde ich da nicht unbedingt verwenden - da muss die CPU noch viel zu viel mit tun, d.h. du würdest nicht die Geschwindigkeit vom schreiben (lesen) messen sondern ein Mischmasch aus Performance der stdlib und Performance der Platte.
BTW: Performance schreibt man mit "ance" hinten, eben so wie ich das tue. Wie auch alle anderen "ance" Wörter (reluctance, inductance, ...).
-
Hey danke Leute für die ganzen Tipps, werde sie mir mal beherzigen und ausprobieren.
Gruss
StormriderP.s. Ich denke jetzt immer dran Performence so zu schreiben Performance

Selbst in der Rechtschreibung wird mir hier geholfen *perfekt*