0

VC10 から VC11 に切り替えると、数値を含むファイルを読み取るときにパフォーマンスが 10 分の 1 に低下することがわかりdoubleます。

#include <iostream>

int main() {
  double sum = 0, x;
  for(int i=0; i<1000000; i++){
    std::cin >> x;
    sum += x;
  }
  std::cerr << sum << std::endl;
  return 0;
}

環境がせいぜいリリース モードのオプションを選択するように、Developer Studio で実行可能ファイルをビルドしました。

誰でもこれを確認できますか?何が問題なのですか?に関係しているのではないlocaleでしょうか?

前もって感謝します、

アンドレアス

4

1 に答える 1

0

*何らかの理由で、以前の回答が削除されました (最初の文は、より良い結果が得られたときに編集が不器用だったため、少し混乱していたことを認めます)

実際、私にとってパフォーマンスはほぼ同じです。

VC11 書き込み/読み取り 1M doubles -> 6.600/3.562 秒
VC10 書き込み/読み取り 1M doubles -> 6.266/3.606 秒

したがって、私の実験では、vc11 のファイルからの double の読み取りはおよそです。vc10と同じ性能。コードサンプル:

int _tmain(int argc, _TCHAR* argv[])
{
  auto x = 0.0;
  auto numberofdoubles = 1000000;
  auto filename = "C:\\double.txt";

  {
  std::ofstream filestr(filename);
  auto starttime = clock();
  for(int i=0; i<numberofdoubles; i++)
    filestr << (double)i << " ";

  auto endtime = clock();
  auto elapsed = (double)(endtime - starttime)/CLOCKS_PER_SEC;
  std::cout << "writing: " << elapsed << std::endl;
  }

  {
  std::ifstream filestr (filename);
  auto starttime = clock();
  for(int i=0; i<numberofdoubles; i++)
    filestr >> x;

  auto endtime = clock();
  auto elapsed = (double)(endtime - starttime)/CLOCKS_PER_SEC;
  std::cout << "reading: " << elapsed << std::endl;
  }

  return 0;
}
于 2013-06-11T13:36:13.100 に答える