Wenn Sie nach einem allgemeinen Zuordner für ein C / C ++ Programm fragen, habe ich dieses Papier gefunden Hoard: Ein skalierbarer Speicherzuordner für Multithread-Anwendungen , der diese Frage berücksichtigt. Dies ist ein Zitat aus diesem Dokument
Es gibt noch keine Standard-Suite von Benchmarks für die Bewertung Multithread-Allokatoren. Wir wissen davon keine Benchmarks, die speziell betonen Multithread-Leistung des Servers Anwendungen wie Webserver 1 und Datenbankmanager. Wir haben uns für Benchmarks entschieden beschrieben in anderen Zeitungen und sonst veröffentlicht (der Larson Benchmark von Larson und Krishnan [22] und der Shbench Benchmark von MicroQuill, Inc. [26]), zwei Multithread-Anwendungen, die Benchmarks (BEMengine [7] und Barnes-Hütte [1, 2]), und schrieb einige Microbenchmarks von uns selbst zu betonen verschiedene Aspekte der Speicherzuordnung Leistung (threadtest, aktiv-falsch, passiv-falsch).
Dieses Papier ist irgendwie alt. Allerdings habe ich kürzlich einen Allokator für HP-UX ( MallocNextGen ) gesehen und auch HP kann das nicht stellen Sie sicher, dass es für alle möglichen Anwendungen gut ist. Es sagt:
Der neue Allokator ist generell voraussichtlich die Leistung von verbessern Anwendungen. Es kann jedoch sein einige Anwendungen für die Leistung kann sich verschlechtern. Daher Benutzer Es wird empfohlen, Benchmarks zu erstellen Anwendungen mit dem Standardspeicher Zuweiser in libc und mit der Zuweiser in libmallocng vor der Verwendung der neue Allokator in einer Produktion Umgebung.
Was Geschwindigkeit und Gleichzeitigkeit betrifft, so muss ich aus eigener Erfahrung die Leistung Ihres eigenen Programms messen, um zwei verschiedene Zuweiser zu vergleichen. Wenn wir über Linux sprechen, können Sie LD_PRELOAD verwenden, um verschiedene Zuordner zu laden.
Ich habe vor einigen Jahren selbst mehrere Allokatoren getestet und meine Erfahrung ist, dass die Ergebnisse alle von der Art des Tests abhängen. Wenn Sie selbst einige Benchmarks schreiben möchten, berücksichtigen Sie die folgenden Situationen:
Sie werden feststellen, dass die Ergebnisse für jeden Test unterschiedlich sein werden. Zuweiser, die in einer Situation sehr gut sind, können in anderen Situationen schlecht sein.
In der Praxis bedeutet dies, dass es am besten ist, es in einer Live / realistischen Situation in Ihrer Anwendung zu testen.
Tags und Links c memory c++ benchmarking memory-management