Applicationspeed messbar??



  • Hallo leute,

    ich bin gerade dabei ein ziemlich komplexes Programm zu schreiben das mit SQL Datenbank kommuniziert. (Im Sekundentakt Abfragen) Außerdem müssen die Eingaben
    (ms bereich) überprüft werden und hierzu bestimmte Funktionen oder ganze Module ausgeführt werden.

    Ich selbst bin ja C++ Programmierer und habe zuvor auch C gelernt. Ich Arbeite auch mit einem Partner zusammen der knappe 5 Jahre erfahrung in Java und C# hat, und zuvor auch C Programmiert hat. Auch wenn der Aufwand extram ist möchte ich gerne wissen welche Programmiersprache für diese Anwendung Perfekt ist! Es gibt hier wirklich um hundertstel Sekunden. Gibt es bestimmte möglichkeiten die Ausführgeschwindigkeit bestimmter Funktionen und/oder Zugriffszeiten zu messen und Auszugeben?

    In folgenden Sprachen 😃

    C - C++ - C#

    Habe C++ soll für Berechnungen sogar manchmal besser/schneller sein als Fortran und C# sei die beste Sprache für Datenbankkommunikation. Es ist mir auch eig. egal welche Sprache wir verwenden müssen. Hauptsache wir wissen welche wirklich die schnellste in jedem oder zumindest in bestimmten Gebieten ist!

    Laut irgendeinem Video das ich mal auf Intel gesehen habe, kann man die Ausführungsgeschwindigkeit bzw einen kompletten Programmdurchlauf mit irgendeinem Programm (hab den Namen leider nicht) messen... Sowas währe ideal, nur halt für diese 3 Sprachen und nicht für das komplette Programm, sondern nur bestimmte funktionen 😉

    Vielen Dank schonmal im Vorraus!



  • Profiler.



  • Ein externes Programm kenne ich nicht.
    Unter C/C++ und Windows könntest du mit GetTickCount arbeiten (ms seit Rechner start)

    unsigned int start = GetTickCount();
    //code
    cout<<GetTickCount()-start;
    

    Sonst könntest du noch Assemblerbefehle einbauen, die die Takte der CPU zählt



  • Dieser Thread wurde von Moderator/in volkard aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Anscheinend wird fast die ganze Rechnezeit von der Datenbank verbraten. Dann ist es völlig egal, welche Sprache Du nimmt, nichmal Java würde sich da langsam anfühlen.

    Es gibt hier wirklich um hundertstel Sekunden

    Ähm. In einer hundertstel Sekunde kann der Prozessor 50 Millionen Zahlen addieren. Eine hundertstel Sekunde ist eine Ewigkeit für jede einigermaßen ernstzunehmende Sprache.



  • Hmm... leider find ich unter Wikipedia und Profiler zwar was diese Programme machen oder machen sollten, nur leider find ich keine Liste von solchen Programmen... es klingt zwar komisch aber bisher musste ich niemals auf Geschwindigkeit achten, und dadurch kenne ich auch keine sonderlich guten Profiler-Programme..

    Und bezüglich der dauer, natürlich ist eine hundertstel Sekunde lange eine Funktion etc. nur wenn diese dann knapp 100 mal die Sekunde aufgerufen wird oder manche sogar mehrere tausende male die Sekunde bleibts gerne mal ne Sekunde hängen, und das darfs nicht 😢

    Das ganze ist ein Emulator für ein MMORPG und derzeit benutzen wir einen Emulator der OpenSource war, leider nichtmehr weiterentwickelt und von der Community verpfuscht (es sind dinge enthalten die garnichts damit zu tun haben..) , und seitdem Entwickeln wir unseren eigenen. Zu erwartende Spieler sind mehr als 1000 Stück und alle greifen im Sekundentakt auf Informationen aus der Datenbank zurück. Und es währe denkbar schlecht wenn jemand bei jeder kleinigkeit eine Sekunde warten müsste, so ist es ja leider im momment... was vielleicht auch daran liegt das die Server etwas ausgelastet sind. Die sind aber nur deshalb ausgelastet weil einfach ziemlich schlecht Programmiert wurde...( Es wurde fast überhauptnicht Faktorisiert, man kann das Programm fast garnicht warten und wenn man etwas ändert entstehen 2 neue Bug's.. Kommentare sind mangelware und die hälfte ist sogar Code wo der Kommentar @bug das meiste ausmacht)

    Hoffe ihr könnt mir irgendein gutes Tool oder paar Tipps geben wie man solche massen am besten hinbekommt.. Hab sonst immer nur 1 User GUI Programme gemacht.. ;/



  • Wenn es unter Linux oder OSX laeuft und C oder C++ ist: valgrind.



  • Ich kann mir schwerlich vorstellen, dass die Programmiersprache für die für die Antwortgeschwindigkeit dieses Programms relevant ist (zumindest, wenn wir bei den drei genannten bleiben). Also würde ich die Sprache nehmen, die ich am besten kenne, so dass ich vermutlich den besten Code schreiben werde. Vielleicht ist auch das Vorhandensein passender Bibliotheken ein Argument für eine bestimmte Sprache?

    Beim Entwickeln würde ich unbedingt volkards Hinweis beachten, also DB-Zugriffe möglichst minimieren. Oft kann man Ergebnisse (oder wenigstens Zwischenergebnisse) im Speicher halten.

    Vielleicht ist es auch sinnvoll, das Ganze in mehrere Threads aufzuteilen, so dass die Antwortzeiten nicht zwangsläufig von längeren Berechnungen hoch getrieben werden?

    Stefan.


Anmelden zum Antworten