私たちがこれまでに持っている情報を考えると、どんな答えも推測です。しかし、ここに1つの推測があります:
一部のオペレーティングシステム(特に現時点ではDebianとその派生物)では、Gnatのデフォルトのインストールはデフォルトのgcc自体とは異なるバージョンのgcc(gcc-4.6)です。または、 Gnat Libre Edition 2012をダウンロードした場合は、システム独自のgccと一緒に独自のgccバージョンがインストールされます。
いずれの場合も、(Gnatmakeなどを使用して)結合されたAda / Cプログラムをビルドすると、純粋なCビルドとは異なるCコンパイラバージョンが使用された可能性があります。その場合、速度の違いは純粋に異なるCコンパイラバージョンによるものである可能性があります。
この仮説をテストするには、(a)使用しているコンパイラのバージョンを正確に調べて、質問に名前を付けます。-および(b)純粋なCバージョンを同じコンパイラバージョンでビルドするように強制します(たとえば、CC = gcc-4.6フラグを使用)-これが問題である場合、速度の違いはなくなります。
私の解決策(重要です)は、-enable-languages = ada、c、c ++を使用して、ソースから新しいgcc(現在4.7.2を使用しています)をビルドすることです。
ただし、他の解決策がある場合もあります。たとえば、同じ実際の動作を選択するには、異なるコンパイルフラグが必要になる場合があります。さまざまなCコンパイラバージョンのドキュメントは、いくつかの手がかりを提供するはずです。
または、しばらく待ってからアップグレードしてください。Debianは、Gnatリリースを他のgccと同期させる計画を立てています。非互換性(皮肉なことに、そのC部分と新しいGCCバージョンの間!)によってこのプロセスを妨げていた主要なAda / Cアプリが1つありましたが、そのアプリは現在更新されています。