2012年4月18日水曜日

パフォーマンスエンジニアリング

コンピュータソフトウェアを作る上で、パフォーマンスが重要な分野はまだまだあります。
しかしパフォーマンス向上には、少なからずコストがかかります。
コストがかかると言う事は、かかるコストに対する効果を示せなければ、実際に実行に移す事が難くなります。
経験と感ではなく、統計と理論によりパフォーマンス向上させる事を、パフォーマンスエンジニアリングと呼びます。



パフォーマンス向上作業を行う際に重要な事

○作業前と作業後のパフォーマンスを比較する
作業により、どの程度パフォーマンスが向上したか不明な場合、作業自体の有効性も不明になります。
パフォーマンスを計測する場合には、作業前と作業後で同じデータを処理させた結果を比較する必要があります。
これにより作業により向上したパフォーマンスが正しく計測出来ます。

○事前にボトルネックを調査する
全体のパフォーマンスに影響の少ない部分のパフォーマンス向上を行っても、作業時間に見あった効果は得られません。
最小限の投資で最大限のパフォーマンス向上を行う為には、プロファイリングによりボトルネックを特定する事が重要になります。

○作業前と作業後で計算結果が同一になる事を保証する
パフォーマンス向上の作業によっては以前と計算結果が異なってしまう事があります。
計算結果が異なってしまうと、最悪の場合、今まで動いていたプログラムが動かなくなってしまう可能性があります。
最適化作業をする上の前提として以前と同じ計算結果になる事を保証する事が重要になります。
浮動小数点演算のパフォーマンス向上の為に、近似値を利用した最適化を行う事がありますが、近似値を用いた場合の計算精度の低下が新たな問題を引き起こさないか、慎重に調査を行う必要があります。


パフォーマンスの向上には、作業前と作業後の状態を比較して検証できる環境が重要になります。
パフォーマンス向上作業は、この環境を作る作業とも言えます。

0 件のコメント:

コメントを投稿