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

x86 16-bits Assembleur Discussion :

Python plus rapide que l'Assembleur ?


Sujet :

x86 16-bits Assembleur

  1. #1
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Python plus rapide que l'Assembleur ?
    J'avoue que je n'arrive pas à le croire.
    Vous êtes sans douter que l'Assembleur est le langage de programmlation le plus proches de la machine.
    Selon moi, si l'Assembleur est plus proche de la machine alors il est forcément le langage de programmation le plus rapide n'est-ce pas ? (c'est quand même logique).

    Et bien je vous apprends que cela est peut-être faux.
    Car je programme en Python et mon programme en Python met 2 secondes pour m'afficher cent fois le mot "traore" tandis que l'Assembleur me met plus de 5 secondes. Alors cela veut-il dire que l'Assembleur, bien qu'il soit assez proche de la machine, reste néanmoins le langage de programmation le plus lent ? , et du moins le moins adapté pour la programmation de nos jours ? Car tout programme qui se respecte doit être assez rapide pour traiter de nombreuses informations et cela en un temps record

    Alors s'il y a quelqu'un qui peut m'expliquer.
    Pour les infos je programme en Assembleur 16 bits.

    Ou alors est-ce le 16 bits qui est lent ?
    A vrai dire je suis un peu découragé et j'espère que j'ai tort

  2. #2
    Membre confirmé Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    Points : 567
    Points
    567
    Par défaut
    Citation Envoyé par le pythonien Voir le message
    ou alors est ce le 16 bits qui est lent?
    Oui, les programmes 16 bits sont émulés sous Windows donc ton test ne représente rien. En plus dans ce cas-ci les performances sont clairement limitées par le temps mis pour afficher le texte à l'écran.
    Quand j'avais résolu des problèmes de Project Euler j'avais été surpris de voir que les performances ne changeaient pas entre une version assembleur, C ou Python. Par contre j'avais lu il y a quelques mois que Python avait vraiment un problème avec le multithreading.

  3. #3
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 396
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 396
    Points : 20 504
    Points
    20 504
    Par défaut
    Citation Envoyé par le pythonien Voir le message
    et bien j e vous apprend quecela est peut etre faux.
    car je programme en python et mon programme en python met 2 seconde pour m affiher cent vopis le mot "traore" tandis que l assemleur me met plus de 5 secondes.:
    Hé ! Tout dépend de ton programme assembleur si tu utilises par exemple les interruptions du BIOS ou du DOS si tu copies des données sur les registres de la pile....
    Python c'est sans doute développé en C et les compilos C sont particulièrement optimisés au niveau du code

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 400
    Points : 23 783
    Points
    23 783
    Par défaut
    Citation Envoyé par le pythonien Voir le message
    Alors s'il y a quelqu'un qui peut m'expliquer.
    Pour les infos je programme en Assembleur 16 bits.
    Et le Python, à ton avis, en quoi est-il écrit ? :-)

    Bon, déjà, l'assembleur, c'est le langage du microprocesseur. Plus précisément, son jeu d'instruction et ses modes d'adressage. Ça veut dire que c'est une forme lisible du langage machine. Ce n'est pas simplement un langage « bien noté », ou plus performant parce que mieux conçu.

    Si tu veux faire un bench qui mesure réellement les performances d'un programme, fait un programme qui dure plus de quelques secondes, d'une part, et qui soit réellement autonome :

    Essaie par exemple de compter de zéro à 4 milliards :

    En assembleur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                xor ecx,ecx
    branch:     dec ecx
                jnz branch
    Et en Python

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    a = int (0xffffffff)
    while a:
        a=a-1
    Et mesure les temps d'exécution des deux :-)

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2006
    Messages : 400
    Points : 562
    Points
    562
    Par défaut
    Citation Envoyé par le pythonien Voir le message
    Je programme en Python et mon programme en Python met 2 secondes pour m'afficher cent fois le mot "traore" tandis que l'Assembleur me met plus de 5 secondes.
    Lorsque tu programmes en Python, le compilateur réalise des optimisations (par exemple, choix des instructions les plus rapides) pour améliorer les performances du programme.
    Lorsque tu programmes en Assembleur, le compilateur va générer un programme proche de ce que tu as écrit.
    Il est donc fort probable que le programme Python soit mieux "optimisé" que le programme Assembleur, d'où la différence de performances.
    Pour t'en convaincre, tu peux désassembler le programme Python, et comparer le code Assembleur généré par le compilateur Python avec ce que tu as écrit en Assembleur.

  6. #6
    Membre chevronné
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    Janvier 2005
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 702
    Points : 1 905
    Points
    1 905
    Par défaut
    Hello,

    J'ai pas tout compris a ton programme en Assembleur,
    tu affiches 100 fois un mot c'est bien ca ?
    Mais comment ? dans une fenetre Win$ ? directement sur l'ecran
    en mode texte ?

    car meme si les programmes 16 bits sont emules, pour afficher 100 fois
    un mot de 6 caracteres, il ne faut pas 5 Secondes !

    Je viens de faire un test sur un Celeron a 2.4GHz sous XP, avec un
    petit prog en Forth (donc pas en assembleur hein)

    Pour afficher 65536 fois le mot "TRAORE" en mode plein ecran en mode texte
    en utilisant les fonctions DOS (int21h) et en laissant faire les sauts de pages
    (et ca c'est lent)....
    Bon, tout ca tout ca.... il me met 11.31secondes

    En mode fenetre DOS sous XP ce temps passe a 3.79 secondes mais la c'est
    de la triche car la fenetre n'est pas rafraichie souvent

    Donc j'ai pas encore tout compris a ton "test"

    a+ Francois

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Et le Python, à ton avis, en quoi est-il écrit ? :-)

    Bon, déjà, l'assembleur, c'est le langage du microprocesseur. Plus précisément, son jeu d'instruction et ses modes d'adressage. Ça veut dire que c'est une forme lisible du langage machine. Ce n'est pas simplement un langage « bien noté », ou plus performant parce que mieux conçu.

    Si tu veux faire un bench qui mesure réellement les performances d'un programme, fait un programme qui dure plus de quelques secondes, d'une part, et qui soit réellement autonome :

    Essaie par exemple de compter de zéro à 4 milliards :

    En assembleur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                xor ecx,ecx
    branch:     dec ecx
                jnz branch
    Et en Python

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    a = int (0xffffffff)
    while a:
        a=a-1
    Et mesure les temps d'exécution des deux :-)
    en fait, mesurer le VECTEUR temporel pour etudier limpact direct de labstraction linguistique par calcul du coefficient de deceleration (plus long est le test, plus il est fiable). Le vecteur physique n'etant pas souhaite car lalgorithme doit calculer labsolu. par ailleurs, ce genre de test nest nen est qu1 sur bien des methodes...

  8. #8
    Membre actif

    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2009
    Messages : 128
    Points : 203
    Points
    203
    Par défaut
    teurastaja a écrit :
    en fait, mesurer le VECTEUR temporel pour etudier limpact direct de labstraction linguistique par calcul du coefficient de deceleration (plus long est le test, plus il est fiable). Le vecteur physique n'etant pas souhaite car lalgorithme doit calculer labsolu. par ailleurs, ce genre de test nest nen est qu1 sur bien des methodes...
    En bon Français sans erreur d'orthographe, cela semblerait sorti tout droit de "La théorie du bordel ambiant" de Moreno...

  9. #9
    Membre actif

    Inscrit en
    Février 2009
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 200
    Points : 235
    Points
    235
    Par défaut
    + je me demande si l'énergie dépensée sera réellement compensée par une avancée intellectuelle quelconque

Discussions similaires

  1. C++ "classique" plus rapide que l'Assembleur SSE ?
    Par kanigoo dans le forum x86 32-bits / 64-bits
    Réponses: 4
    Dernier message: 04/04/2009, 23h38
  2. [Info] Un python plus rapide que le C
    Par anthyme dans le forum Interfaçage autre langage
    Réponses: 2
    Dernier message: 21/02/2008, 18h18
  3. Plus rapide que bresenham ?
    Par mathieu_t dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 01/06/2005, 13h28
  4. [VB6] timer plus rapide que 1 d'interval
    Par windob dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 24/02/2004, 00h16
  5. Réponses: 8
    Dernier message: 31/10/2003, 16h21

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