2 Stimmen

wie man die Leistung einer C++-Api überprüft

Mein Webserver hat eine Menge von Abhängigkeiten für das Zurücksenden von Daten, wenn es eine Anforderung erhält. Ich teste eine dieser Abhängigkeitsanwendungen innerhalb des Webservers. Die Anwendung ist vom Haupt-Webserver entkoppelt, und nur Abfragen gehen zu ihm in Form von Api's ausgesetzt.

Meine Frage ist, wenn ich diese Api in einer Multithreading-Umgebung (C++-Funktionen mit einem 2 Quadcore-Prozessor-Maschine) überprüfen möchte, was ist die beste Art und Weise zu gehen, es zu tun?

Rufe ich jede API in einem separaten Thread oder Prozess? Wenn ja, wie implementiere ich solchen Code? von was ich herausfinden kann, würde ich das Funktionieren des Webservers duplizieren, aber ich kann keinen anderen besseren Weg finden, um herauszufinden, die Leistungsverbesserungen durch diese Komponente allein gegeben.

2voto

Thomas Tempelmann Punkte 10162

Es hängt davon ab, ob Ihre Anwendung mit Daten arbeitet, die gemeinsam genutzt werden, wenn sie in parallelen Prozessen ausgeführt wird, denn das wird höchstwahrscheinlich bestimmen, wo der Geschwindigkeitsengpass wartet.

Wenn die Anwendung z. B. auf eine Datenbank oder Festplattendateien zugreift, müssen Sie wahrscheinlich mehrere Threads/Prozesse simulieren, die die Anwendung abfragen, um zu sehen, wie sie miteinander auskommen, d. h. ob sie beim Zugriff auf die gemeinsame Ressource aufeinander warten müssen.

Wenn die Anwendung jedoch nur einige interne Berechnungen durchführt, kann sie gut skalieren, solange alle Daten in den Speicher passen (d. h. kein Zugriff auf den virtuellen Speicher, z. B. auf die Festplatte, erforderlich). Dann können Sie die Leistung nur einer Instanz testen und sich auf die Optimierung ihrer Geschwindigkeit konzentrieren.

Es könnte auch hilfreich sein, das Betriebssystem anzugeben, das Sie zu verwenden beabsichtigen. Mac OS X bietet Werkzeuge für Leistungstests und -optimierung, die Windows und Linux möglicherweise nicht haben, und umgekehrt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X