Re: Optimization de code c

Top Page

Reply to this message
Author: Yves Martin
Date:  
To: Patrick Dupre, guilde
Subject: Re: Optimization de code c
On Tue, 2020-03-17 at 10:42 +0100, Patrick Dupre wrote:
> En cette periode de teletravail, j'aimerai optimizer cette routine
> (en temps CPU)
>
> void nume_pop_absor_satur (const double* S, const unsigned short int
> e, const unsigned short int n, const unsigned short int i, const
> unsigned short int k, const short int kk, double *sum, double prod) {
>   unsigned short int j ;
>   if (kk >= 0) {
>     for (j = i ; j < n - kk ; j++) {
>       if (j == e) continue ;
>       if (k == 0) {
>         *sum += S [j] ;
>     }
>       else nume_pop_absor_satur (S, e, n, j + 1, k, kk - 1, sum, prod
> * S [j]) ;
>       }
>     }
>   else {
>     *sum += prod ;
>     }
>   }

>
> Est-ce que vous auriez des idees ?


Bonjour

Joli défi. Je pense que le plus grand facteur de gain sera de supprimer
l'appel récursif ("dé-récursiver") pour éviter la mise en pile des
paramètres - à moins que le compilo ait été suffisamment futé pour
passer tous les paramètres en registres et identifier les variables qui
ne changent pas - et donc inutiles d'empiler.

Par contre, le reverse-engineering va me donner la migraine.

Aurais-tu s'il te plaît le modèle mathématique de ce calcul (je vois
bien une définition de suite arriver...)

--
Yves Martin