• [^] # Re: Quid sur de gros programmes ?

    Posté par (site web personnel) . En réponse au lien Faites du C pour sauver la planète!. Évalué à 4. Dernière modification le 26 mars 2019 à 22:49.

    Ce n'est probablement pas si simple.

    Il se pourrait qu'un langage qui ne prenne pas en charge les pointeurs mais qui utilise les références (et un ramasse-miettes) batte C dans certains cas simplement parce que la gestion de la mémoire peut être plus efficace : les objets peuvent être bougés, l'utilisation mémoire compactée, les libérations de mémoires peuvent être regroupées. Aussi, l'existence des pointeurs empêchent certaines optimisations.

    Sur des petites exécutions, là où un programme C bien écrit va en général libérer toutes les allocations faites, un ramasse-miette peut décider de laisser le système libérer la mémoire à la fin de l'exécution, ce qu'il fait de toute façon, sans le faire lui-même.

    Une compilation à la volée peut également permettre d'appliquer certaines optimisations, potentiellement dépendantes des données à l'exécution, impossible à appliquer avec une compilation classique. Une compilation à la volée peut aussi prendre en compte les spécificités matérielles (architecture CPU spécifique par exemple), là où les programmes C sont souvent compilés pour un grand ensemble de machines.

    Souvent sur des petites exécutions, une compilation à la volée est plus lente qu'une exécution native équivalente parce qu'il faut compiler ET exécuter sans optimisation spécifique. Je ne sais pas s'il y a des supports exécutifs qui enregistrent les résultats des compilations à la volée / les optimisations pour contrer ce problème.