ptimale Übergabe von Abmessungen eines Arrays mit fester Größe in julia

Ich möchte eine Funktion schreiben, die eine Matrix als Eingabe verwendet. Dies ist ein häufiger Aufruf auf niedriger Ebene in einem komplizierten Projekt. Daher kann es schwerwiegende Auswirkungen auf die Leistung haben, wenn diese Funktion so schnell wie möglich ausgeführt wird. Weil Geschwindigkeit für mich so wichtig ist, verwende ich die Typen inFixedSizeArrays, da ich weiß, dass dies die Speichernutzung einspart. Aber ich kenne oft bestimmte Eigenschaften der Eingabematrix, und ich bin nicht sicher, ob ich das optimal ausnutzen kann.

Hier ist ein einfaches Beispiel. Stellen Sie sich vor, die Funktion möchte ich so schnell wie möglich machen:

using FixedSizeArrays

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

Offensichtlich ist dies ein triviales Beispiel, aber darum geht es nicht. Der Punkt ist, dass ich etwas über die Dimensionen der Matrix @ weinput: es hat immer nur zwei Spalten und ich kann immer die Anzahl der Zeilen zur Laufzeit angeben. Dies scheint Informationen zu sein, die an den Compiler übergeben werden könnten, um meinen Code schneller zu machen. Könnte ich es als Argument übergeben, das die Größe von @ definieinput irgendwie? Hier ist ein Beispiel, das nicht funktioniert, aber Ihnen eine Vorstellung davon geben soll, was ich versuche.

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

Gibt es so etwas, was ich tun kann? Würde das überhaupt funktionieren, wenn ich könnte? Vielleicht macht FixedSizeArrays bereits alles, was getan werden kann. Danke für eure Gedanken!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage