• [^] # Re: TSC

    Posté par . En réponse au message Mesurer le temps d'exécution d'un fragment de code. Évalué à 2.

    Je viens de retrouver du code que j'avais fait il y a quelques mois.

    #ifdef ARCH_X86_64
    static inline guint64 counter_read_time(void)
    {
    guint64 a, d;
    __asm__ __volatile__ (
    "rdtsc\n\t"
    : "=a" (a), "=d" (d)
    );
    return (d << 32) | (a & 0xffffffff);
    }
    #elif ARCH_X86
    static inline guint64 counter_read_time(void)
    {
    guint64 l;
    __asm__ __volatile__ (
    "rdtsc\n\t"
    : "=A" (l)
    );
    return l;
    }
    #endif

    static inline guint64 counter_elapsed(guint64 t0, guint64 t1)
    {
    return t1 - t0;
    }


    et ça s'utilise avec :

    guint64 start, end, cycles_nb;
    start = counter_read_time();
    {
    /* code à mesurer */
    }
    end = counter_read_time();
    cycles_nb = counter_elapsed(start, end);