2009-11-25 11 views
14

Necesito un IPC local similar a un socket. Utilicé canalizaciones con nombre y superpuse IO en Windows y deseo reescribir la aplicación para impulsar :: ASIO para que también pueda usar sockets de dominio UNIX.¿Alguien ha realizado un análisis de rendimiento de boost :: asio?

He revisado recientemente partes de la biblioteca libevent y sé que sólo es compatible con socket() y seleccione() para las ventanas en la versión 1.4. Como IO superpuesto es muy eficiente, dejarlo fuera es obviamente un rasgo inaceptable que se está abordando en la versión 2 (que está en alfa). Otro ejemplo de aplicación subóptima es el uso de árboles rojo-negro vs. prio-colas para la lógica de tiempo de espera que era adressed algún lugar a lo largo de la línea.

¿Alguien tiene alguna opinión sobre las características de funcionamiento de impulso vs libevent/libev. ¿Tiene algún rasgo indescriptible evidente en ciertas plataformas? Mi objetivo para esta pregunta es que no quiero perforar la biblioteca ASIO a menos que sea absolutamente necesario. Quiero saber si boost :: asio usa las primitivas OS más óptimas de la manera más óptima.

+0

creo que el comentario del autor de la pregunta acerca libevent no apoyar solapado IO bajo Windows es fuera de fecha. Alguien confirma – unixman83

Respuesta

4

También check this post acerca de un problema de bloqueo en boost :: asio, que puede le afecta.

+0

gracias frunsi, esa publicación en particular fue muy útil. –

8

que hacer pruebas de rendimiento de asio y mi propia impl en el archivo de lectura (my blogpost entry) - en dos palabras - Buenos resultados mostrados asio.

+0

gracias> texto al azar <: D –

+0

Tenga en cuenta que esta prueba no demuestra el rendimiento ASIO en zócalos. Y no tiene comparación con su rendimiento bajo una gran carga. – unixman83

2

En mi opinión, Boost.Asio es Windows-First, donde la mayoría de las demás bibliotecas de software libre son Linux-First. Sin embargo, la calidad en Linux siempre ha sido buena. Desde que este software fue revelado por 20 personas que no participaron en su desarrollo. La velocidad en Linux con múltiples subprocesos se ha mejorado rápidamente en el momento en que el asker hizo esta pregunta (2009): http://think-async.com/Asio/LinuxPerformanceImprovements

La velocidad en Windows siempre ha sido buena. Mi mayor queja es el diseño de sockets UDP, está mal implementado.