2017-08-11 6 views
0

この質問は多くの時間前に尋ねられていますが、解決策はありません。私はこの大きなヘッダーファイルをコンパイルすると、パス2エラーのヒープスペースが不足しています。

class PredictClass0 : public CompiledTree 
{ 
public: 
PredictClass0(const std::string& modelDirectory) : 
    CompiledTree(20, 17, modelDirectory) 
    { 
    } 
std::size_t predict_probabilities(const gst::ShottonFeatureAlgorithm &algorithm, const GstFrame* const frame, const std::size_t pixel,const std::vector<ParamValues>& offsetThresholdPair) 
{ 
     if (algorithm.computeFeature(frame,pixel,offsetThresholdPair[0].offsetPairs) < offsetThresholdPair[0].threshold) 
     { 
      if (algorithm.computeFeature(frame,pixel,offsetThresholdPair[1].offsetPairs) < offsetThresholdPair[1].threshold) 
      { 
       if (algorithm.computeFeature(frame,pixel,offsetThresholdPair[2].offsetPairs) < offsetThresholdPair[2].threshold) 
       { 
        if (algorithm.computeFeature(frame,pixel,offsetThresholdPair[3].offsetPairs) < offsetThresholdPair[3].threshold) 

//and the list goes on.... 

ヘッダファイルは、30メガバイトの大きさを持っていると私はそれらの3を持っているように見える私の意思決定ツリーのヘッダーファイルを作成し、それが(最終的にはエラー)をコンパイルするために6時間かかります。私は可能な限り記号や表現の量を最小限にしようとしました。これまでのところ私はこれらのソリューションを試してみました:

  • MSDN Solution

  • 設定コンパイラフラグ/ MP(マルチプロセッサコンパイル)

  • コンパイラのメモリ割り当て/ Zmの

  • を最小限ビルド/ Gmのを有効にします

  • ヒープリザーブとコミットサイズを10000000に設定する

32GBのRAMと約64GBのメモリを搭載したWin 10マシンでこれらすべてを試してみました。私は巨大なファイルのコンパイルを処理するためのきちんとした方法があるかどうかを知りたいですか?

+0

ヘッダーをプレコンパイルできますか? – wallyk

+0

はい、しかし、PCHを使用していても、大量の計算で問題は残ります。 – MarKS

答えて

0

ヒープ準備金を設定し、10メガバイトに10000000

なぜあなたが制限されているヒープのサイズをコミットしますか?それを100 MBまたは500 MBにまで上げてみてください。あなたは十分な記憶力を持っています。

+0

ありがとう!私はそれを試してみましょう。しかし、なぜ私はVisual Studioがこれを内部的に処理しないのだろうと思っていましたか? – MarKS

+0

@マルス:誰が知っている?他のコンパイラは行います。しかし、ヒープサイズを提供すべきであるという印象を与えるドキュメンテーションの欠陥があるかもしれません。指定しないとどうなりますか? – wallyk

+0

同意します!私の知る限り、デフォルトのヒープサイズはVisual Studio 2013で1MBに設定されています。しかし、コンパイラが使用可能なメモリを使用できるときには、独自のヒープサイズを設定するのは面倒です。また、私はそれをテストせずに、私は同じエラーが発生します。 – MarKS

関連する問題