ベクトル/行列ライブラリを作成しています。(GCC、ARM NEON、iPhone)
typedef struct{ float v[4]; } Vector;
typedef struct{ Vector v[4]; } Matrix;
関数呼び出し時のデータコピーによるパフォーマンスの低下を避けるために、構造体データをポインターとして渡しました。だから私は最初にこのような関数を設計しました:
void makeTranslation(const Vector* factor, Matrix* restrict result);
しかし、関数がインラインの場合、パフォーマンスのために値をポインターとして渡す理由はありますか? それらの変数もコピーされますか? レジスタとキャッシュはどうですか?私はこのように機能を再設計しようとしました:
inline Matrix makeTranslation(const Vector factor) __attribute__ ((always_inline));
それぞれの場合の通話料金はどのようにお考えですか。
- 提案を反映するために、2 番目の署名に「const」を追加しました。