• [^] # Re: Concurrence ?

    Posté par . En réponse au message caractéristiques d'un serveur web pour forte affluence. Évalué à 2.

    " code mal écrit " => par exemple :
    - avec un MVC, coller du dans du V et du V dans du C,
    - faire de la POO avec 1 seul objet qui fait tout n'importe comment,
    - utiliser la suite 0,1,2,3 en tant que nombre, faire des opérations de comparaison mais ne pas respecter la loi d'ordre qui va avec ( comme dire 0:pas important, 1:important, 2: faiblement important, 3:moyennement en utilisant dans le code des > et des < ) ... c'est un usage contre-intuitif de nombre comparables puisque l'on s'attend à 0<1<2<3 et non 0<1>3<2 ( comprendre 1>3>2>0 )

    et je parle d'exemples concrets écrit par des personnes diplômées et non stagiaires.

    intrinsèque : http://fr.wiktionary.org/wiki/intrins%C3%A8que
    extrinsèque : http://fr.wiktionary.org/wiki/extrins%C3%A8que

    complexité extrinsèque du code : complexité qui n'est pas lié au code que tu écris, que tu maintiens, que tu patches. par exemple, quand tu modifies un fichier php, tu vas ni aller réécrire l'interpreteur php ni apache2 ni le noyau.

    complexité intrinsèque du code :
    complexite théorique du code sans considérer les contraintes inhérentes au matériel, à l'interpréteur.

    cela concerne aussi bien la consommation mémoire que la vitesse d'execution.

    par exemple :
    quand tu fais un "select *" d'une table enorme sans aucun where, et que tu recopies tout en mémoire, "c'est très couteux", et le fait que php ou apache soit optimisé ou non n'a rien à y faire, qu'il y ait 4Mo ou 4Go ou 4To de RAM, cela ne change rien.

    quand je parle de complexité intrinsèque du code, je parle bien de la complexité du code sur le quel tu travailles et non pas de la complexité que tu subis de l'extérieur.

    tu noteras que je ne parlais pas de parallèlisation & co.

    " tenu de charge du code " : exemple ultra basique (et peu significatif) pour la mesurer sur un site wev : /usr/bin/ab

    le but est de savoir si ton code bien qu'il puisse être "théoriquement peu couteux en terme d'execution", est parallélisable ou non.

    exemple pratique idiot :
    tu accèdes en lecture seule à des fichiers sur le disque mais tu as mis un verrou d'accès exclusif à ces fichiers durant toute l'execution de ton programme.
    si ton code est théoriquement rapide, il va faiblement tenir la charge puisqu'à chaque fois, il n'y aura qu'une seule requete qui y aura accès.

    les seules choses pouvant améliorer les performances, sont la performance du hardware ou la réécriture du code.

    exemple pratique tout aussi idiot :
    tu fais à chaque requete un update sans aucun where sur une table ayant beaucoup d'entrées, dans une base MySQL.
    MySQL utilise souvent des verrous exclusif lors d'un update ... donc faible tenue de charge quand tu fais des update couteux.


    pour finir, c'est "perduE" <- tu noteras le e final :p