Könnte mir bitte jemand sagen, warum folgende Dinge passieren könnten:
Ich habe zwei Computer:
Ich führe C ++ - Programm (msvc 2005 c ++ kompiliert), das nur auf Server zu langsam arbeitet, aber nicht auf meiner comp.
Ich habe Messungen durchgeführt (GetThreadTimes usw.) und könnte definitiv sagen, dass der enge Ort - seine Speicherzuteilung (neu / malloc) Und es passiert nur auf dem Server!
Ich könnte behaupten, dass es aufgrund von Speicherfragmentierung wegen passiert 1. Zeit-Server-Instanz des Programms funktioniert gut, es beginnt Zeit zu verlieren on allokiert erst nach dem erneuten Laden von Daten in den Speicher (1-1,5 Millionen Allocs / Frees).
Ich würde nicht so überrascht sein, wenn ich das gleiche Verhalten aufgrund des Gedächtnisses sehe Fragmentierung auf beiden Computern (mein Comp und Server) aber was ich sehe ist: 1). auf meiner Comp-Zuteilung nehmen ~ 5% der Zeit (nicht genau, aber so etwas) 2). auf dem Server dauert diese Zuteilung ~ 75% der Zeit
Wie kann das passieren? Was könnte C ++ - Zuordnungen auf Server-Computer verlangsamen, Inzwischen ist es OK für meine Arbeitsstation. Wo könnte der Unterschied sein? Wahrscheinlich ist es etwas mit Speichermanagementfunktionen auf OS-Ebene verbunden? weil der C ++ - Level-Manager in beiden Fällen gleich ist.
Hier sind beide Konfigurationen:
1). Mein Computer (wo Allocs ~ 5% benötigen):
%Vor%2). Server (wo Zuweisungen ~ 75% beanspruchen):
%Vor%Wird dankbar sein für die Klärung dieses Problems.
Tags und Links memory c++ allocation memory-fragmentation