2009-11-25 14 views
14

J'ai besoin d'IPC local de type socket. J'ai utilisé des tubes nommés et des E/S superposées sur des fenêtres et je veux réécrire l'application pour amplifier :: ASIO afin qu'elle puisse également utiliser les sockets de domaine UNIX.Est-ce que quelqu'un a fait une analyse de performance de boost :: asio?

J'ai récemment passé en revue des parties de la librairie libevent et je sais qu'il ne supporte que socket() et select() pour windows dans la version 1.4. Comme IO chevauché est très efficace, le laisser en dehors est évidemment un trait inacceptable qui est adressé dans la version 2 (qui est en alpha). Un autre exemple de mise en œuvre sous-optimale est l'utilisation d'arbres rouge-noir par rapport aux prio-files d'attente pour la logique de temporisation qui était adressed quelque part le long de la ligne.

Est-ce que quelqu'un a des opinions sur les caractéristiques de performance de boost vs libevent/libev. At-il des traits flagrants indésirables sur certaines plates-formes? Mon but pour cette question est que je ne veux pas troubler la bibliothèque ASIO sauf si je dois absolument. Je veux savoir si boost :: asio utilise de la manière la plus optimale les primitives OS les plus optimales.

+0

Je pense que le commentaire du demandeur sur le fait que libevent ne supporte pas les E/S superposées sous Windows est obsolète. Quelqu'un confirme. – unixman83

Répondre

4

Aussi check this post sur un problème de verrouillage dans boost :: asio, qui peut vous affecter.

+0

merci frunsi, ce poste particulier était très utile. –

8

Je fais des tests de performance d'asio et mon propre impl sur la lecture de fichiers (my blogpost entry) - en deux mots - asio montré de bons résultats.

+0

merci> texte aléatoire <: D –

+0

Notez que ce test ne démontre pas les performances ASIO sur les sockets. Et n'a aucune comparaison à ses performances sous charge lourde. – unixman83

2

À mon avis Boost.Asio est Windows-First, où la plupart des autres bibliothèques de logiciels libres sont Linux-First. Cependant, la qualité sous Linux a toujours été bonne. Depuis ce logiciel a été revu par 20 personnes qui n'ont pas participé à son développement. La vitesse sous Linux avec plusieurs threads a été rapidement améliorée au moment où le demandeur a posé cette question (2009): http://think-async.com/Asio/LinuxPerformanceImprovements

La vitesse sous Windows a toujours été bonne. Mon plus gros reproche est la conception de sockets UDP, il est mal implémenté.