2016-08-25 6 views
0

私はちょうど.netコア1.0に準拠するように既存のコンソールアプリケーションをリファクタリングしました。なぜ.netコア1.0は明らかに.netフレームワークアプリよりもはるかに遅いのですか?

リファクタリングされたコードを.net 4.5.2(exeとして)でコンパイルして実行すると、12秒で実行されます。私が.netコア1(つまり "ドットネット"を使用して)で同じコードを実行すると、24.3秒で実行されます。

これが期待どおりの動作ですか?もしそうでなければ、私が確認できるものは何ですか?

マイケル

+1

「ドットネット実行myproject」と「ドットネットmyproject.dll」のどちらを実行するかを指定できます。最初は多くの検査とオンデマンドコンパイルを行い、2つ目はdllを実行するだけです。結果は劇的に異なります。 – Thomas

+1

私は "dotnet run .."を使用していました。私は別のオプションがあることを知らなかった。後で: "dotnet publish"を使ってアプリケーションとそのサポートライブラリのフォルダを作成し、 "dotnet my_app.dll"で実行しました。タイミングはほんの少しだけ良かった。しかし、可能性のある手掛かりがある:私が "公開"したときに、bin/Debugの公開フォルダが作成されたので、デバッグ用のものが膨大になるかもしれないと思うだろうか?私の遅さを説明しますか? –

+1

"dotnet publish"の "-c release"オプションが見つかりました。結果のアプリケーションは、デバッグ情報が含まれているアプリケーションよりはるかに高速であるようです。実際には、.netフレームワークライブラリ上で実行可能ファイルとして実行されている同じコードとほぼ同じ速度に見えます。 –

答えて

1

通常の疑惑:リリースモードでビルド(または公開)しましたか?これは現在のディレクトリにproject.jsonファイルを探しますことを

dotnet publish -c release 

注意してみてください。 More information is provided here

+0

パブリッシュのドキュメントでは、パフォーマンスに影響があることが明確になりませんでした。しかし明らかにそこには... –

+0

DEBUGモードとRELEASEモードの間には常に大きなパフォーマンスの違いがあったので、彼らはそれを当然と考えていたと思います。 –

関連する問題