Dimensiones de paso óptimas de matriz de tamaño fijo en julia

Quiero escribir una función que tome una matriz como entrada. Esta es una llamada frecuente de bajo nivel en un proyecto complicado, por lo que hacer que esta función sea lo más rápida posible tiene implicaciones de rendimiento potencialmente graves. Debido a que la velocidad es tan importante para mí, estoy usando los tipos enFixedSizeArrays como sé que esto ahorrará en el uso de memoria. Pero a menudo conozco ciertas propiedades de la matriz de entrada, y no estoy seguro de que esté haciendo un uso óptimo de eso.

Aquí hay un ejemplo simple. Imagine que la función que quiero hacer lo siguiente lo más rápido posible:

using FixedSizeArrays

function foo( input::Mat )
# NB: Mat is the FixedSizeArrays matrix type
  return 2 * input
end

Obviamente este es un ejemplo trivial, pero ese no es el punto. El punto es que sé algo sobre las dimensiones de la matriz.input: siempre tiene solo dos columnas y siempre puedo especificar el número de filas en tiempo de ejecución. Esto parece información que podría pasarse al compilador para acelerar mi código. ¿Podría pasarlo como un argumento que define el tamaño deinput ¿de alguna manera? Aquí hay un ejemplo que no funciona, pero debería darle una idea de lo que estoy tratando de hacer.

function bar( int::N, thismat::Mat{N,2,Float64} )
  return 2 * thismat
end

¿Hay algo como esto que pueda hacer? ¿Funcionaría esto si pudiera? Tal vez FixedSizeArrays ya hace todo lo que se puede hacer. Gracias por tus pensamientos!

Respuestas a la pregunta(1)

Su respuesta a la pregunta