2

CSV ファイルを読み取るさまざまな方法でベンチマークを行っているところ、「奇妙な」問題が見つかりました。問題は、コンソール アプリケーションでこのメソッドを使用すると、次のようになることです。

        var lines = File.ReadAllLines(fileName); // OutOfMemoryException
        foreach (var line in lines)
        {
            //doing stuff
        }

OutOfMemoryException が発生しますが、WPF プロジェクトで同じメソッドを使用すると問題なく動作します。これをテストしているファイルは 730MB で、より大きな CSV ファイルで ReadAllLines を使用しないことはわかっていますが、このメソッドが WPF アプリケーションでは機能するのに、コンソール アプリケーションでは機能しないのはなぜですか?

4

2 に答える 2

3

あなたの WPF アプリケーションは任意の CPU でコンパイルされており、x32 ターゲット CPU でアプリケーションをコンソールしていると思われます。アプリケーションを x64 マシンで実行する場合、WPF アプリケーションは x32 でコンパイルされたコンソール アプリケーションよりも多くのメモリを使用できますが、これは約 1.5 GB に制限されています。

さらに、アプローチを変更することをお勧めします。可能であれば、ファイル全体を一度に処理しないでください。

于 2014-09-19T09:21:12.667 に答える