He creado un prototipo de una herramienta ORM personalizada utilizando la programación orientada a aspectos (PostSHarp) y logrando la ignorancia de persistencia (antes del tiempo de compilación). Ahora traté de averiguar cuánto sobrecarga presenta en comparación con el uso puro de DataReader y ADO.NET. Hice un caso de prueba: inserte, lea, elimine datos (aproximadamente 1000 registros) en MS SQL Server 2008 y MySQL Community Edition. Ejecuto esta prueba varias veces usando ADO.NET puro y mi herramienta personalizada.Prueba de gastos generales de rendimiento de la solución ORM personalizada: cómo hacerlo.
Espero que los resultados dependerán de muchos factores: memoria, intercambio, CPU, otros procesos, así que realicé pruebas varias veces (20-40). Pero los resultados fueron realmente inesperados. Simplemente difieren demasiado entre esos casos. Si solo hubiera algunos valores extremos, podría ignorarlos (tal vez el intercambio sucedió o algo así) pero eran tan diferentes que estoy seguro de que no puedo confiar en este tipo de pruebas. Casi la mitad de veces mi ORM mostró un 10% mejor rendimiento que ADO.NET puro, otras veces fue -10%.
¿Hay alguna forma en que pueda hacer que esas pruebas sean confiables? No tengo una computadora potente con mucha memoria, pero ¿de alguna manera puedo hacer que MS SQL y MySQL o ADO.NET sean lo más consistentes posible durante esas pruebas? ¿Y qué pasa con el recuento de registros, que es más confiable, utiliza una pequeña cantidad de registros y se ejecuta más veces o de otra manera?
Gracias por la sugerencia. Descubrí que MySql ofrece resultados mucho más inconsistentes que MS SQL, así que supongo que tendré que excluir MySQL de mi prueba. – JustAMartin