高速化の手順
・アルゴリズム見直し
そもそも、10年以上前のネイティブのソースで、アルゴリズム的にそこまで酷いのは無い(クラス設計など別だが)むしろ、最近のコードのほうが、酷い事が多い。ある程度経験があればこんな事にはならないんだけどっていうコードが多いです。
以外に見直す価値があります。
・浮動小数点演算の見直し
ゲーム、画像処理に関して、メインとなる手法です。これは、今時のCPUでも、非常に有効です。ただし、まったく同じ結果になるとは限らないので、演算の精度との相談になります。まぁ、ゲームにしても、画像処理にしても、精度が変わったことに気付ける人に会った事が無いので、ほぼ心配いりません。
気付かれたら、優秀な同僚がいる俺って幸せ者だと思いましょう。
・スレッド分割
最後の砦にして、最も効果のある手法です。ただし、対象の処理が並列に処理可能である事が条件です。今時のCPUでは、複数コアが当たり前ですので、思い切ってコア数分スレッドをきりましょう。幸せになれます。
単純な処理だと、ほぼ、スレッド数分処理時間が小さくなります。
高速化はこれくらい。
・アルゴリズム見直し
そもそも、10年以上前のネイティブのソースで、アルゴリズム的にそこまで酷いのは無い(クラス設計など別だが)むしろ、最近のコードのほうが、酷い事が多い。ある程度経験があればこんな事にはならないんだけどっていうコードが多いです。
以外に見直す価値があります。
・浮動小数点演算の見直し
ゲーム、画像処理に関して、メインとなる手法です。これは、今時のCPUでも、非常に有効です。ただし、まったく同じ結果になるとは限らないので、演算の精度との相談になります。まぁ、ゲームにしても、画像処理にしても、精度が変わったことに気付ける人に会った事が無いので、ほぼ心配いりません。
気付かれたら、優秀な同僚がいる俺って幸せ者だと思いましょう。
・スレッド分割
最後の砦にして、最も効果のある手法です。ただし、対象の処理が並列に処理可能である事が条件です。今時のCPUでは、複数コアが当たり前ですので、思い切ってコア数分スレッドをきりましょう。幸せになれます。
単純な処理だと、ほぼ、スレッド数分処理時間が小さくなります。
高速化はこれくらい。