IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langages de programmation Discussion :

Python 3.11 et C++ : les performances de ces deux langages en matière de simulation


Sujet :

Langages de programmation

  1. #21
    Membre averti
    Profil pro
    Développeur
    Inscrit en
    Octobre 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 122
    Points : 425
    Points
    425
    Par défaut
    Si au moins il libérait correctement sa memoire en C++ on pourrait peut etre commencer a penser que c'est serieux, m'enfin bon comparer les oranges et les tomates c'est souvent pas vraiment utile
    Il est clair que l'auteur ne sait absolument pas ecrire du code C++ "acceptable", et surtout surtout, il est clair que l'auteur pense savoir la ou il ne sait rien du tout. J'arrive pas a croire qu'on puisse oser ecrire du code pareil, et en plus faire le guignol par dessus en ecrivant un article a propos de performance c'est le summum. Je veux dire, si tu ne fais pas de deallocations, et que t'es meme pas fichu de t'en rendre compte, est-ce que c'est vraiment le moment de mesurer les perfs? Moi je pense que c'est le moment de se prendre une grosse code review dans la figure et de revenir plus tard avec quelque chose de correct a mesurer..

  2. #22
    Candidat au Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Janvier 2023
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2023
    Messages : 1
    Points : 3
    Points
    3
    Par défaut Optimisation
    Voici quelques suggestions pour optimiser ce programme :

    Dans la fonction de mise à jour de la classe Agent, vous utilisez la fonction pow pour calculer la distance au carré entre deux agents. Cela implique une opération mathématique relativement coûteuse. Au lieu de cela, vous pouvez calculer la distance au carré plus efficacement en utilisant l'expression suivante : squared_dist = (x - target->x)*(x - target->x) + (y - target->y)*(y - target- >y).

    La variable min_dist dans la fonction de mise à jour est initialisée à un très grand nombre, mais cette valeur n'est jamais utilisée. Au lieu de cela, vous pouvez initialiser min_dist avec un grand nombre uniquement lorsque vous trouvez une nouvelle cible.

    Vous pouvez optimiser davantage la fonction de mise à jour en utilisant une instruction break pour quitter la boucle lorsque vous avez trouvé une cible appropriée. Cela empêchera la boucle de continuer à rechercher le reste de la liste des agents.

    Vous pouvez également envisager d'utiliser une structure de données autre qu'une liste pour stocker les agents. Par exemple, un vecteur serait probablement plus rapide, car il ne nécessite pas la surcharge de maintenance des pointeurs et des liens.

    J'espère que ces suggestions aident! Faites moi savoir si vous avez des questions.

  3. #23
    Membre éprouvé Avatar de pcdwarf
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2010
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 267
    Points : 965
    Points
    965
    Par défaut
    cherchez pas ! python et C++ n'ont pas la même finalité.
    ça n'a pas de sens de les comparer.

  4. #24
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2023
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2023
    Messages : 1
    Points : 0
    Points
    0
    Par défaut Très inintéressant pour ne pas dire plus.
    Passons les grosses erreurs de code en C++ évoquées plus haut, il y a plusieurs problèmes fondamentaux qui font qu'on ne peut comparer (ou qu'il n'est pas intéressant de la faire) facilement les performances du C++ et du Python :

    • Python est principalement conçu pour faire un lien simple pour le programmeur entre des bibliothèques, qui sont souvent codées en C/C++. Ainsi il n'est pas pertinent de programmer en Python sans utiliser ces bibliothèques pour faire des gros calculs ou des simulations.
    • Python est limité par l'interpréteur. Vous avez mentionné qu'il y avait 6 coeurs sur votre machine. Sachez que Python à ma connaissance ne tourne que sur un seul coeur. Ainsi en avoir 6 ou 1 ne change pas grand chose. Pour ce qui est du C++ il tourne par défaut sur un seul coeur mais pour faire des gros calculs on peut diviser le programme en tâches et les répartir sur les différents processeurs. Ainsi par exemple sur un 12 coeurs on peut gagner jusqu'à x12 en performances.
    • Il est dommage d'avoir pris en compte le temps de compilation. Tout l'intérêt d'un langage compilé est de lancer le compilateur une seule fois puis de réutiliser la version compilée. Ainsi dans un cas d'utilisation normal on ne prendrait pas en compte le temps de compilation puisque quand on réexécute un programme on ne le recompile pas systématiquement.


    Ainsi on ne peut comparer les deux langages car ils n'ont pas les mêmes usages. S'il s'agit simplement de faire tourner de lourdes simulations sans usage de bibliothèques externes, choisissez le C++.
    S'il s'agit de faire un petit script qui ne demande pas trop de calculs ou d'utiliser directement des bibliothèques toutes faites, utilisez Python !

  5. #25
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 898
    Points
    1 898
    Par défaut
    Citation Envoyé par UnProgrammeurLambda Voir le message
    S'il s'agit de faire un petit script qui ne demande pas trop de calculs ... , utilisez Python !
    Arrêtons d'écrire des choses pareils : le Python est utilisé aussi en IA dans de très grands calculs sur de très grandes masses de données.

    A+ ;-)

Discussions similaires

  1. les performances de Python
    Par jiggyOne dans le forum Général Python
    Réponses: 17
    Dernier message: 07/07/2019, 12h10
  2. Réponses: 0
    Dernier message: 08/06/2011, 22h57
  3. Les performances de python
    Par jkalzsmu dans le forum Général Python
    Réponses: 1
    Dernier message: 18/08/2008, 10h37
  4. Petite question sur les performances de Postgres ...
    Par cb44 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 13/01/2004, 13h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo