• STATISTIQUES
  • Il y a eu un total de 0 membres et 9136 visiteurs sur le site dans les dernières 24h pour un total de 9 136 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] apprendre-a-manipuler
    Site d'apprentissage de la manipulation d'autrui.
    Hacking
    [FR] frameip
    le site de partage des connaissances du monde TCPIP
    Protocole
    [FR] Forum-Webmaster
    Une communauté webmaster pour apporter / recevoir de l'aide en création de site internet. Webmaster...
    Webmaster
    [FR] Root-me
    Script: 5, Système: 20, Cracking: 16, Cryptanalyse: 17, Programmation: 8, Réaliste: 11, Réseau: 10, Stéganog...
    Challenges
    [EN] Hack this site
    Basic: 11, Realistic: 17, Application: 18, Programming: 12, Extbasic: 14, Javascript: 7, Stego: 17
    Challenges
    [EN] Reddit
    Subreddit dédié à la sécurité informatique.
    Hacking
    [FR] Asp-php
    Tutoriaux sur ASP, PHP, ASP.net, XML, SQL, Javascript, HTML, VML - Scripts et ressources pour webmasters - Forums d&#...
    Programmation

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 5 (1 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Le mystère de GNU yes
05-07-2012, 14h32
Message : #1
spin Hors ligne
Contributeur
*****



Messages : 325
Sujets : 15
Points: 38
Inscription : Nov 2011
Le mystère de GNU yes
Salut, je suis confronté à un problème curieux, qui me fait penser que les programmeurs GNU sont vraiment des soricers Big Grin

J'imagine que vous connaissez tous le programme yes, qui affiche "y\n" en boucle quand lancé sans argument. J'ai voulu programmer un clone de yes en assembler, dont voici le code :

Code :
section .text

global _start

_start:

push WORD 0x0a79   ;;  "y\n"

x:
    mov eax, 4
    mov ebx, 1
    mov ecx, esp
    mov edx, 2
    int $80
    jmp x

Voici maintenant le code de GNU yes (en C, 88 lignes) : http://git.savannah.gnu.org/cgit/coreuti.../src/yes.c

Je pense pouvoir dire sans prétention que mon yes devrait être plus optimisé, pourtant il n'en est rien. Voici les pseudo-benchmarks que j'ai effectué :

Code :
$ timeout 3s yes > lol1      # GNU yes (/usr/bin/yes)
$ timeout 3s ./yes > lol2    # mon yes

Sur 3 secondes d'exécution, GNU yes peut me produire 146944000 lignes de 'y', tandis que mon ./yes maison n'en produit qu'un nombre à 5 chiffres, la différence n'est pas moindre !

Je me suis dit que GNU yes devait avoir une priorité d'exécution plus haute que mon ./yes, ce qui faisait de lui un programme plus rapide. En regadant via top, les deux sont fixés à la même priorité NI = 0.

Cela demeure un mystère, avez-vous une idée de ce qui peut rendre GNU yes plus rapide que mon programme de 7 instructions assembleur ? Ou bien les codeurs de GNU sont des vraiment sorciers ? Avez-vous une idée d'un autre facteur qu'il faut prendre en considération ?
+1 (0) -1 (0) Répondre


Messages dans ce sujet
Le mystère de GNU yes - par spin - 05-07-2012, 14h32
RE: Le mystère de GNU yes - par Ark - 05-07-2012, 16h52
RE: Le mystère de GNU yes - par spin - 05-07-2012, 19h31
RE: Le mystère de GNU yes - par Ark - 06-07-2012, 10h56
RE: Le mystère de GNU yes - par gruik - 24-11-2012, 18h42
RE: Le mystère de GNU yes - par spin - 25-11-2012, 15h33
RE: Le mystère de GNU yes - par spin - 26-11-2012, 20h07
RE: Le mystère de GNU yes - par gruik - 26-11-2012, 20h34

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut