¿Cómo realizar pruebas de rendimiento en bibliotecas escritas en diferentes lenguajes de programación?

StackOverflow https://stackoverflow.com/questions/789376

Pregunta

El problema es:Dada una serie de bibliotecas de programación con alcance similar o igual (p. ej.analizador XML, expresiones regulares, marcado, ...);¿Existen herramientas con las que se puedan ejecutar pruebas de rendimiento en estas bibliotecas y compararlas (y generar informes), aunque las bibliotecas puedan estar escritas en diferentes lenguajes de programación (como Java, C#, Ruby, Python, Perl, ...)? ?

miré estos opensourcetesting.org/rendimiento.php, pero ninguno de ellos encajaba en el requisito (algo borroso) anterior.

¿Existen kits de herramientas o marcos para pruebas de rendimiento multiplataforma en varios idiomas?

Gracias.

¿Fue útil?

Solución

No intentaría utilizar un único conjunto de herramientas para varios idiomas.Es poco probable que esto genere el mejor (o incluso el promedio) rendimiento para cada aplicación.

En lugar de eso, intentaría crear un diseño de marco que defina lo que se va a probar y que tenga un conjunto de datos común.Entonces cada idioma/biblioteca puede proporcionar su propio marco. implementación que prueba las operaciones que son apropiadas para esa biblioteca.De esa manera las operaciones pueden ser "lógicamente equivalentes" incluso si no utilizan el exacto misma sintaxis/llamadas.Terminas probando el idiomático código para esa biblioteca/lenguaje, en lugar de simplemente un mínimo común denominador.

Este es el enfoque que he adoptado para evaluar los buffers de protocolo.Hasta ahora, mi marco muy básico tiene implementaciones en C# y Java, y ahora estoy escribiendo un marco más completo que permite ejecutar un "script de referencia" completo.Un objetivo ideal es que diferentes implementaciones dentro de la misma plataforma (p. ej.diferentes implementaciones .NET de Protocol Buffers) deberían poder conectarse al mismo código central de evaluación comparativa con muy poco esfuerzo.

Lo importante, en mi opinión, es tener un conjunto común de operaciones (incluso si no son todo Implementado por todo bibliotecas) y un conjunto de datos común.Esa es la única manera en que los puntos de referencia pueden ser significativos.

Otros consejos

Si es posible, sería la mejor manera de utilizar algún tipo de inyección de dependencias para que pueda conectar a cabo un módulo y cambiar por otro. Lo que se necesita para crear la interfaz única para este tipo de bibliotecas antes de que Tho (envoltorio que lo es), lo que hace un trabajo más duro, pero el diseño general mejor. En el lado positivo, si quieres referencia interfaz anterior no tiene por qué ser completa, pero sólo para exponer lo que cree que sería más beneficiosa cuando perf. está en cuestión.

Las capacidades dependen en gran medida el lenguaje utilizado.

No me gustan las pruebas artificiales. Son más de las veces inacurate OMI, la gente tiende a pasar por alto que una función de biblioteca hace más o menos de otra función de la biblioteca mientras ambos se ven como la misma cosa. Rara vez encuentro con los puntos de referencia que no tienen ese tipo de propiedad.

En los otros lados, rara vez hay tal cosa como totalmente mejor biblioteca. Muchas bibliotecas presente un buen rendimiento en algunos escenarios en los que otras bibliotecas similares pueden chupar, y vice-versa.

Por lo tanto, si el rendimiento es lo más importante para su aplicación, lo mejor que puede hacer la OMI es crear interfaz para las operaciones que desea importar y, a continuación par plug-in / out de las bibliotecas y ver las diferencias en los puntos de referencia reales, los puntos de referencia de su aplicación en acción, no una artificial jumbo Mumbo matemáticas ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top