14

Ich benötige Socket-ähnliche lokale IPC. Ich habe Named Pipes verwendet und IO über Windows überlappt und möchte die Anwendung in boost :: ASIO umschreiben, damit auch UNIX-Domain-Sockets verwendet werden können.Hat jemand eine Leistungsanalyse von boost :: asio durchgeführt?

Ich habe kürzlich Teile der Libevent-Bibliothek überprüft und ich weiß, dass es nur Socket() und select() für Windows in der Version 1.4 unterstützt. Da überlappende IO sehr effizient ist, ist es offensichtlich ein inakzeptables Merkmal, das in der Version 2 (die in Alpha ist) angesprochen wird. Ein anderes Beispiel einer suboptimalen Implementierung ist die Verwendung von Rot-Schwarz-Bäumen gegenüber Prioritätswarteschlangen für die Zeitablauflogik, die irgendwo entlang der Linie adressed war.

Hat jemand eine Meinung über die Leistungsmerkmale von Boost vs Libevent/Libev. Hat es auf bestimmten Plattformen eklatante unerwünschte Merkmale? Mein Ziel für diese Frage ist, dass ich die ASIO-Bibliothek nicht piddle-hole, außer ich muss unbedingt. Ich möchte wissen, ob boost :: asio die optimalsten OS-Primitive optimal nutzt.

+0

Ich denke, der Kommentar des Fragestellers über Libevent, die überlappende IO unter Windows nicht unterstützt, ist veraltet. Jemand bestätigt es. – unixman83

Antwort

4

Auch check this post über ein Verriegelungsproblem in boost :: asio, das kann Sie betreffen.

+0

danke frunsi, dieser bestimmte Beitrag war sehr hilfreich. –

8

Ich mache Leistungstests von Asio und meine eigene impl auf Datei lesen (my blogpost entry) - in zwei Worten - Asio gezeigt, gute Ergebnisse.

+0

danke> zufälliger Text <: D –

+0

Beachten Sie, dass dieser Test keine ASIO-Leistung für Sockets demonstriert. Und hat keinen Vergleich zu seiner Leistung unter hoher Belastung. – unixman83

2

Meiner Meinung nach Boost.Asio ist Windows-First, wo die meisten anderen freien Software-Bibliotheken sind Linux-First. Aber die Qualität unter Linux war schon immer gut. Da diese Software von 20 Personen, die nicht an seiner Entwicklung beteiligt waren, erkannt wurde. Die Geschwindigkeit unter Linux mit mehreren Threads wurde im Laufe der Zeit rasant verbessert, als der Fragesteller diese Frage stellte (2009):

Geschwindigkeit unter Windows war schon immer gut. Meine größte Kritik ist das Design von UDP Sockets, es ist schlecht implementiert.