2

Visual Studio 2013 で Boost MultiArrays を使用しています。Visual STudio のネイティブ x64 C++ コンパイラを使用して Boost をコンパイルしました。タイプ「info C5002」の警告がたくさん表示されます。警告の横に、警告の理由コードも表示されます。これが私のコードと、私が受け取る警告の小さなサンプルです。

#include <iostream>
#include <math.h>
#include <fstream>
#include "boost/multi_array.hpp"

using namespace std;

typedef boost::multi_array<float, 2> Grid;
int main()
{
    Grid myGrid;
    myGrid.resize(boost::extents[100][100]);
    return 0;
}

警告の例:

1> --- 解析関数: bool __cdecl std::_Equal<__int64 const * __ptr64,__int64 const * __ptr64>(__int64 const * __ptr64,__int64 const * __ptr64,__int64 const * __ptr64) 1> c:\program files (x86 )\Microsoft Visual Studio 12.0\vc\include\xutility(2736) : 情報 C5002: 理由 '500' によりループがベクトル化されていません

単純な 10 行のコードに対して、文字通り何百もの同じ警告が表示されます。実際、#include "boost/multi_array.hpp" 以外のコードがない場合でも、C5002 情報を取得します。

私の懸念は、ベクトル化の失敗による効率の低下です。マルチアレイのベンチマークを行ったところ、実際、リリース モードであっても、ネイティブ アレイよりもはるかに遅く実行されます。ここを参照してください: Boost MultiArrays のパフォーマンスが悪い

マルチアレイの使用中にランタイム効率が低下しないように、コンパイラーを適切にベクトル化する方法があるかどうかを知りたいです。

4

0 に答える 0