OK、ここに私が欲しいものがあります:
- 私は可能な限り高速でなければならないいくつかの非常に要求の厳しい関数 (主にビットマップ上で動作するなど) を作成しました。
- ここで、これらの関数は型によってグループ化されている場合もあれば、関数が操作する変数の型によってグループ化されている場合もあることに注意してください。
- そして問題は、アルゴリズムの実装そのものとは別に、技術的な観点から、速度を台無しにしないために何をすべきかということです。
そして今、次のシナリオを検討しています。
- それらを単純な関数として作成し、必要なパラメーターを引数として渡すだけです
- クラスを作成し(「グループ化」/組織化の目的で)、それらを静的として宣言するだけです
- タイプごとにクラスを作成します。たとえば、ビットマップで作業するためのクラスを作成し、ビットマップごとにそのクラスの新しいインスタンスを作成します (例:
Bitmap* myBitmap = newBitmap(1010);
、およびその内部メソッドで操作します (例:myBitmap->getFirstBitSet()
)
では、これらのアプローチのうち、最も速いのはどれでしょうか? 単純な関数とクラスカプセル化されたstatic
関数の間に、パフォーマンス上の違いは本当にありますか? 私が言及していない、望ましい他のシナリオはありますか?
補足:clang++
Mac OS X 10.6.8用のコンパイラを使用しています。(それが違いを生むなら)