2

ライブラリの1つを使用していたときに、何か奇妙なことがわかりました。特定のファイルタイプの読み取りを担当するクラスライブラリがあります。そして、それはその仕事をうまくやっています。

Readこのクラスライブラリプロジェクトのクラスのメソッドを、2つの異なるプロジェクト(WPFとコンソール)で使用しました。

私が見つけたもの:WPF Applicationクラスライブラリを使用して40MBのファイルを読み取るには、17分かかります。ただし、同じファイルを使用して読み取るには1分Console Applicationかかります。

これは、2つの異なるプロジェクトで使用しているものと同じコードです。

DateTime t1 = DateTime.Now;                             
var geometris = MyLibrary.Read(fileName);
TimeSpan dt1 = DateTime.Now - t1;       //dt1: 17min for WPF
                                        //dt1:  1min for Console                       

私が試したもの:Console Applicationプラットフォームターゲットはx86であり、WPF ApplicationのターゲットプラットフォームはAnyCpuであることがわかりました。そこで、WPFのターゲットプラットフォームをx86に変更して、再度実行しました。今回の実行時間は3分 (14分速かった)でした

質問:ターゲットプラットフォームの変更がそのような影響を与える方法を知っている人はいますか?それでも、なぜWPFアプリなのかわかりません。ライブラリから同じ入力を使用して同じメソッドを呼び出すと、コンソールより2分遅くなりますか?

4

1 に答える 1

2

私の実践では、x86 と x64 のパフォーマンスに大きな違いはありませんでした。あなたの場合、理由は異なる RAM 使用量にある可能性があります。x64 モードでは、すべてのオブジェクト参照が 2 倍の RAM を占有します。

于 2013-03-18T07:16:58.283 に答える