• [^] # Re: C facile

    Posté par . En réponse au message Demande pour que mon code python aille 1 million de fois plus vite car j'ai au moins 4 millions de f. Évalué à 4. Dernière modification le 04 février 2025 à 21:08.

    Voilà, flemme d’expliquer parce que je suis un peu rouillé :

    gcc -masm=intel -O2 -S a.c

    Un code sans boucle :

     call strtol@PLT
     xor edx, edx
     mov edi, 1
     lea rsi, .LC0[rip]
     test eax, eax
     cmovns edx, eax
     xor eax, eax
     call __printf_chk@PLT
    

    VERSUS

    gcc -masm=intel -S a.c

    Un code avec boucle (jmp est l’instruction de saut pour initier la boucle et jl est l’instruction de saut tant que la boucle continue)

    ⇀ jmp⇀ .L2
    .L3:
    ⇀ add⇀ DWORD PTR -8[rbp], 1
    ⇀ add⇀ DWORD PTR -4[rbp], 1
    .L2:
    ⇀ mov⇀ eax, DWORD PTR -4[rbp]
    ⇀ cmp⇀ eax, DWORD PTR -12[rbp]
    ⇀ jl⇀ .L3
    

    En Python, tu ne vas pas écrire ton code comme tu l’écris en C. Tu va faire plutôt un truc du genre (pas testé, j’ai la flemme) :

    import numpy
    a = numpy.ones(NUMBER, numpy.int32)
    s = numpy.sum(a)
    

    T’auras à peu de chose prêt les perf. du C. À fortiori.