0

Visual Studio 2010 で C++ アプリケーションを作成しています。パフォーマンス ウィザードでコードを実行すると、17 秒近くかかります。コードはマルチスレッドに非常に適しているため、openmp ディレクティブを追加します。その後、コードを再度実行しますが、これも 17 秒近くかかります。では、パフォーマンス ウィザードはコードを最適化するために何をするのでしょうか? コードを分析し、マルチスレッドまたは単純なコンパイラ最適化を実行しますか? そのウィザードはどのようにコードを最適化しますか?

編集: /openmp オプションを追加して、コンパイラ オプションを有効にしました。ディレクティブに #pragma omp parallel を使用しています 。並列セクション コードを追加しました。ボトルネックはなく、ループの反復は互いに依存しません。

#pragma omp parallel for
for (int i = START; i < END; i++) {
    solutionList[i] = new Solution(list[i]->solution, direction, i);        
}
4

1 に答える 1

3

パフォーマンス ウィザードは、コードをまったく最適化しません。構成に応じて、コードをインストルメント化することにより、コードの実行を測定します (効率は低下しますが、監視はより正確になります)。これは、コードのどの領域を最適化のために調べるかを決定するために使用するツールです。命令のコンパイラによる最適化ではなく、人間によるアルゴリズムの最適化です。

于 2012-05-20T11:18:15.587 に答える