Estoy bastante impresionado por la biblioteca C++ Eigen que usa plantillas de expresión para obtener una enorme aceleración en el cálculo de matriz/vector.Scala LMS para escribir álgebra lineal Lib
Me gustaría clonar esta biblioteca en scala. Por lo que sé, el sistema de tipo scalas no es lo suficientemente potente como para hacer algo como esto, pero debería ser posible LMS de estadificación modular ligero. Parece que hay varios proyectos por ahí (Delight, lms de virtualización, etc.). ¿Cuál sería el derecho de usar para este tipo de proyecto en términos de confiabilidad y rendimiento?
Gracias
Editar: Acabo de encontrar las macros en Scala 2.10. Quizás esto es lo que quiero usar aquí.
@ om-nom-nom
La parte importante es explicado en http://eigen.tuxfamily.org/dox/TopicInsideEigenExample.html
El ejemplo explica que una suma de vectores
u = v + w
tiene buen desempeño en (nativo) C++ ya que una Se crea una variable temporal para la adición y esta variable se asigna a u como
for(int i = 0; i < size; i++) tmp[i] = v[i] + w[i];
for(int i = 0; i < size; i++) u[i] = tmp[i];
Eigen utiliza metaprogramming plantilla (paso a paso se explica en el siguiente enlace) para reducir esta en tiempo de compilación a
for(int i = 0; i < size; i++) u[i] = v[i] + w[i];
que obviamente es más rápido y no necesita una variable adicional.
Podría ayudar, si describe brevemente el mecanismo de las plantillas de expresión. –