最適化とパフォーマンス計測
最適化とは,
ソフトウェア開発においては、最適化を行う前にプロファイリングなどのパフォーマンス計測を行います。これはプログラムの実行時間の大半は、ごく一部の処理によって消費されることが多く、全体の実行時間の大半を占める一部分を最適化した方が効率的であるためです。例えば,
事前にパフォーマンス計測を行わずに最適化をしようとすると,
なお,
プロファイリングとは
プロファイリングとは,
またプロファイリングを行うツールをプロファイラといいます。インテル社,
プロファイリングのための準備
本稿では,
次にプロファイリング対象のサンプルプログラムを準備します。
- Visual Studioの
[ファイル] メニューから [新規作成]→ [プロジェクト] を選択し, [新しいプロジェクト] ダイアログボックスを開きます。 - ダイアログボックス左のツリーから
[インストール済]→ [Visual C++], 中央のリストから [Windowsコンソールアプリケーション] を選択し, [OK] をクリックします。 - 作成したプロジェクトのConsoleApplication1.
cppを開き, リスト1で置き換えます。 - [構成マネージャー]
で [アクティブソリューション構成] を [Release] にします。 - [ビルド]
メニューから [ソリューションのビルド] を選択し, 正常にビルドできることを確認します。
リスト1 プロファイリングするサンプルプログラム
#include "stdafx.h"
#pragma optimize( "", off )
struct LargeStruct {
int a;
int b;
};
LargeStruct aosSrc[10000];
LargeStruct aosDst[10000];
void copy1() {
for (int i = 0; i < 10000; ++i) {
aosDst[i].a = aosSrc[i].a;
}
for (int i = 0; i < 10000; ++i) {
aosDst[i].b = aosSrc[i].b;
}
}
void copy2() {
for (int i = 0; i < 10000; ++i) {
aosDst[i].a = aosSrc[i].a;
aosDst[i].b = aosSrc[i].b;
}
}
void func1() {
for (int i = 0; i < 100; ++i) {
copy1();
copy2();
}
}
int main() {
for (int i = 0; i < 100; ++i) {
func1();
copy1();
copy2();
}
return 0;
}
#pragma optimize( "", off )