Ich habe nicht gehört, dass Fortan wesentlich schneller ist als C, aber es wäre denkbar, dass es in bestimmten Fällen schneller ist. Und der Schlüssel liegt nicht in den vorhandenen Sprachmerkmalen, sondern in denen, die (normalerweise) nicht vorhanden sind.
Ein Beispiel sind C-Zeiger. C-Zeiger werden so gut wie überall verwendet, aber das Problem mit Zeigern ist, dass der Compiler in der Regel nicht erkennen kann, ob sie auf die verschiedenen Teile desselben Arrays zeigen.
Wenn Sie zum Beispiel eine strcpy-Routine geschrieben haben, die wie folgt aussieht:
strcpy(char *d, const char* s)
{
while(*d++ = *s++);
}
Der Compiler muss von der Annahme ausgehen, dass d und s sich überschneidende Arrays sein könnten. Er kann also keine Optimierung durchführen, die zu anderen Ergebnissen führen würde, wenn sich die Arrays überschneiden. Wie zu erwarten, schränkt dies die Art der Optimierungen, die durchgeführt werden können, erheblich ein.
[Ich sollte anmerken, dass C99 ein "restrict"-Schlüsselwort hat, das den Compilern explizit mitteilt, dass sich die Zeiger nicht überschneiden. Beachten Sie auch, dass Fortran ebenfalls Zeiger hat, deren Semantik sich von der von C unterscheidet, aber die Zeiger sind nicht allgegenwärtig wie in C.]
Aber um auf die Frage C vs. Fortran zurückzukommen: Es ist denkbar, dass ein Fortran-Compiler in der Lage ist, einige Optimierungen durchzuführen, die für ein (einfach geschriebenes) C-Programm nicht möglich wären. Ich wäre also nicht allzu überrascht über diese Behauptung. Allerdings erwarte ich, dass der Leistungsunterschied nicht allzu groß ist. [~5-10%]