• [^] # Re: Ça passe très bien :)

    Posté par . En réponse à la dépêche Jython supporte maintenant Python 2.5. Évalué à 9.

    > La seule chose qui change avec le miens

    Mais dans ce genre de bench TOUT rentre en compte, de la moindre valeur de retour, à la version du compilateur et des options de compile. Ca vaut deja que dalle ces benchs en temps normal mais là...

    Le code ci dessus, et on va s'y tenir, en C ca donne ca:


    void rec(int val) {
    if (val == 0)
    return;
    rec(val - 1);
    }

    int main(void) {
    for (int i = 0; i < 655536; i++) {
    rec(5000);
    }
    return 0;
    }


    une fois compilé en -O1 par gcc ca donne ca:


    000000000040047c :
    40047c: 48 83 ec 08 sub 0ドルx8,%rsp
    400480: 85 ff test %edi,%edi
    400482: 74 08 je 40048c <rec+0x10>
    400484: 83 ef 01 sub 0ドルx1,%edi
    400487: e8 f0 ff ff ff callq 40047c
    40048c: 48 83 c4 08 add 0ドルx8,%rsp
    400490: c3 retq

    0000000000400491 :
    400491: 53 push %rbx
    400492: bb 00 00 00 00 mov 0ドルx0,%ebx
    400497: bf 88 13 00 00 mov 0ドルx1388,%edi
    40049c: e8 db ff ff ff callq 40047c
    4004a1: 83 c3 01 add 0ドルx1,%ebx
    4004a4: 81 fb b0 00 0a 00 cmp 0ドルxa00b0,%ebx
    4004aa: 75 eb jne 400497 <main+0x6>
    4004ac: b8 00 00 00 00 mov 0ドルx0,%eax
    4004b1: 5b pop %rbx
    4004b2: c3 retq


    Tu passes en -O2, et la magie du data flow analysis:


    0000000000400480 :
    400480: f3 c3 repz retq
    400482: 66 66 66 66 66 2e 0f nopw %cs:0x0(%rax,%rax,1)
    400489: 1f 84 00 00 00 00 00

    0000000000400490 :
    400490: 31 c0 xor %eax,%eax
    400492: c3 retq


    Super le bench... Tu as tellement peu d'instructions dans un microbench que n'importe quelle modif peut vraiment tout changer.

    Bon maintenant si tu compares une exécution du code donné par bad sheep en C (cf plus haut) et en Java (cf poste précédant), gcc 4.3.2 en -01 et un OpenJDK 1.6.0_0-b14 sur un C2D P9400, :


    $ time java -server -cp Dev/workspace/Test/bin/ TestRec

    real 0m7.983s
    user 0m7.882s
    sys 0m0.029s

    $ time ./O1

    real 0m7.206s
    user 0m7.156s
    sys 0m0.008s


    Si tu veux la sortie assembleur d'Hotspot je te la file. C'est la même chose que gcc modulo quelques optims sur la gestion des boucles.

    Plus tu réponds plus tu montre que tu ne comprend absolument pas ce que tu fais et que tu n'as aucune rigueur. Tu peux continuer à cracher sur les mecs de mozilla ou d'eclipse, mais moi à ta place je me retiendrais...