Passagem ideal das dimensões da matriz de tamanho fixo em julia

Eu quero escrever uma função que leva uma matriz como uma entrada. Essa é uma chamada frequente de baixo nível em um projeto complicado, portanto, tornar essa função o mais rápido possível tem implicações potencialmente graves no desempenho. Como a velocidade é muito importante para mim, estou usando os tiposFixedSizeArrays como eu sei que isso economizará no uso de memória. Mas muitas vezes conheço certas propriedades da matriz de entrada e não tenho certeza de que estou fazendo o melhor uso possível.

Aqui está um exemplo simples. Imagine que a função que eu quero fazer o seguinte o mais rápido possível:

using FixedSizeArrays

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

Obviamente, este é um exemplo trivial, mas esse não é o ponto. O ponto é que eu sei algo sobre as dimensões da matrizinput: sempre tem apenas duas colunas e sempre posso especificar o número de linhas no tempo de execução. Parece informações que podem ser passadas ao compilador para tornar meu código mais rápido. Eu poderia passar isso como um argumento que define o tamanho deinput de alguma forma? Aqui está um exemplo que não funciona, mas deve lhe dar uma idéia do que estou tentando fazer.

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

Existe algo assim que eu posso fazer? Isso funcionaria se eu pudesse? Talvez o FixedSizeArrays já faça tudo o que pode ser feito. Obrigado por seus pensamentos!

questionAnswers(1)

yourAnswerToTheQuestion