鉴于我们目前掌握的信息,任何答案都是猜测;但这里有一个猜测:
在某些操作系统(尤其是 Debian 和目前的衍生系统)上,Gnat 的默认安装是与默认 gcc 本身不同的 gcc 版本(gcc-4.6)。或者,如果您下载了Gnat Libre Edition 2012,它将在您系统自己的 gcc 旁边安装自己的 gcc 版本。
在任何一种情况下,构建组合的 Ada/C 程序(例如使用 Gnatmake)可能使用了与纯 C 构建不同的 C 编译器版本;在这种情况下,速度差异很可能完全取决于不同的 C 编译器版本!
要测试这个假设,您可以 (a) 准确找出您正在使用的编译器版本 - 并在问题中命名它们!- 并且 (b) 强制纯 C 版本使用相同的编译器版本构建(例如使用 CC=gcc-4.6 标志) - 如果这是问题所在,速度差异将消失。
我的解决方案 - 这很重要 - 是从源代码构建一个新的 gcc(我目前正在使用 4.7.2),使用 --enable-languages=ada,c,c++
但是可能还有其他解决方案 - 例如,您可能需要不同的编译标志来选择相同的实际行为;不同 C 编译器版本的文档应该提供一些线索。
或者稍等片刻升级;Debian 计划将他们的 Gnat 版本重新与 gcc 的其余部分同步。有一个关键的 Ada/C 应用程序通过不兼容(具有讽刺意味的是,在其 C 部分和较新的 GCC 版本之间!)阻碍了这一过程,但该应用程序现已更新。