-2

配車プロジェクト用の C++ コードを作成しました。私のデルのラップトップには、Ubuntu と Windows 7 の両方がインストールされています。UNIX プラットフォームの gcc コンパイラでコードを実行すると、Windows OS 上の Visual C++ 2010 のまったく同じコードよりも少なくとも 10 倍高速に実行されます (両方とも同じマシン上にあります)。これは 1 つの特定のコードだけではなく、私が使用しているほぼすべての C++ コードで発生することがわかりました。

ランタイムのこのような大きな違いと、gcc out がビジュアル C++ ランタイムを賢く実行する理由について説明があると思います。誰でもこれについて教えてもらえますか?

ありがとう。

4

1 に答える 1

0

私の経験では、どちらのコンパイラもかなり同等ですが、いくつかの点に注意する必要があります。 1. Visual Studio のデフォルトではスタック チェックがオンになっています。少量の「memcmp」。パフォーマンスが必要な場合は、これをオフにしてください。10 個の要素を持つ配列の 11 番目の要素に書き込むときにキャッチするのに最適です。2. Visual Studio はバッファ オーバーフロー チェックを行います。繰り返しますが、これにより、実行にかなりの時間が追加される可能性があります。

参照: Visual Studio ランタイム チェック

これらは通常、デバッグ モードでは有効になっていますが、リリース ビルドでは有効になっていないため、リリース ビルドと gcc の -O2 または -O3 最適化ビルドから同様の結果が得られるはずです。

これで問題が解決しない場合は、小さな (コンパイル可能な) 例とそれぞれのタイミングを教えてください。

于 2012-12-29T21:52:42.583 に答える