Si vous passez un mois à construire quelque chose en C qui s'exécute en 0,05 seconde, et que je passe une journée à écrire la même chose en Java, et que cela s'exécute en 0,10 seconde, alors le C est-il vraiment plus rapide ?
Mais pour répondre à votre question, bien écrit Le code C s'exécutera généralement plus rapidement que le code bien écrit dans d'autres langages, car une partie de l'écriture du code C "bien" comprend des optimisations manuelles à un niveau proche de celui de la machine.
Bien que les compilateurs soient très intelligents, ils ne sont pas encore capables d'élaborer de manière créative un code qui rivalise avec des algorithmes manipulés à la main (en supposant que les "mains" appartiennent à une bon Programmeur C).
Edit :
De nombreux commentaires sont du type "J'écris en C et je ne pense pas aux optimisations".
Mais pour prendre un exemple précis de ce poste :
En Delphi, je pourrais écrire ceci :
function RemoveAllAFromB(a, b: string): string;
var
before, after :string;
begin
Result := b;
if 0 < Pos(a,b) then begin
before := Copy(b,1,Pos(a,b)-Length(a));
after := Copy(b,Pos(a,b)+Length(a),Length(b));
Result := before + after;
Result := RemoveAllAFromB(a,Result); //recursive
end;
end;
et en C j'écris ceci :
char *s1, *s2, *result; /* original strings and the result string */
int len1, len2; /* lengths of the strings */
for (i = 0; i < len1; i++) {
for (j = 0; j < len2; j++) {
if (s1[i] == s2[j]) {
break;
}
}
if (j == len2) { /* s1[i] is not found in s2 */
*result = s1[i];
result++; /* assuming your result array is long enough */
}
}
Mais combien d'optimisations y a-t-il dans la version C ? Nous prenons beaucoup de décisions concernant l'implémentation auxquelles je ne pense pas dans la version Delphi. Comment une chaîne de caractères est-elle implémentée ? Dans Delphi, je ne le vois pas. En C, j'ai décidé que ce serait un pointeur vers un tableau d'entiers ASCII, que nous appelons chars. En C, nous testons l'existence des caractères un par un. En Delphi, j'utilise Pos.
Et ce n'est qu'un petit exemple. Dans un grand programme, un programmeur C doit prendre ce genre de décisions de bas niveau toutes les quelques lignes de code. Cela s'ajoute à un exécutable fait à la main, optimisé à la main.
7 votes
Pouvez-vous indiquer quelle émission en particulier a parlé de ça ? J'aimerais bien l'entendre.
2 votes
Je suis vraiment surpris de voir à quel point les réponses à cette question sont mauvaises (la plupart des réponses ignorent les différences fondamentales entre les langages compilés et interprétés, etc., je sais ce qu'est le JIT, etc.
0 votes
N'oubliez pas le langage d'assemblage. Rien n'est plus rapide ou plus compact que les exes assemblés en assembleur. L'assemblage est presque purement binaire, c'est donc sans conteste le langage le plus rapide.
3 votes
C est le plus rapide parce que c'est la vitesse de la lumière, et la relativité ?
0 votes
Il est bien sûr faux de dire que le C est le langage de programmation le plus rapide. Aucun langage de programmation, quel qu'il soit, ne s'approche de la vitesse de FORTH. FORTH est utilisé pour déclencher des bombes nucléaires, c'est le langage de programmation de la plupart des satellites, le principal langage de programmation de la station spatiale internationale, ainsi que du CERN et d'ITER. Je comparais la vitesse entre Microsoft C (différentes versions) et FORTH. YAWN à C ...
0 votes
Veuillez fournir une comparaison côte à côte. Je resterai vague pour ne pas déclencher une guerre de la faim, mais il y a des raisons pour lesquelles d'autres langages populaires devraient être plus performants que le C. Si vous voulez savoir pourquoi C est plus rapide, vous devez d'abord valider que Le C est plus rapide.