• [^] # Re: essayer Julia ?

    Posté par . En réponse au journal Un Python qui rivalise avec du C++. Évalué à 2.

    Par exemple, optimiser ton architecture pour exploiter au maximum la taille des lignes de cache, c'est du haut, ou du bas niveau?

    Pour moi, c'est du très bas niveau. Classiquement, dans mon domaine de recherche (biologie/bio-info), tu n'as aucune idée de la machine sur laquelle ton code va tourner (ça va de ton portable à un gros calculateur, en passant par des clusters pas homogènes). Bref, très difficile d'écrire du code spécifique pour une machine.

    ce qui a le mérite d'être plus explicite, je dirais

    Bof, des pointeurs à poil en C++ moderne...

    Je suis curieux, as-tu la possibilité de nous montrer un exemple?

    Pas évident sans refiler tout un tas de code imbittable. De mémoire, ça ressemblait à des tentatives d'éviter des multiplications par zéro:

    double result = fun1();
    const bool is_a_zero = (a==0.);
    const bool is_b_zero = (b==0.); // + the same for is_c_zero etc. 
    if (!is_a_zero) {
     for (unsigned int i = 0; i < BIGSTUFF; i++)
     result += a*fun2(i);
    }
    if (!is_b_zero) {
     for (unsigned int i = 0; i < BIGSTUFF; i++)
     result += b*fun3(i);
    }
    

    C'est simplifié mais c'est l'idée. Les variables a et b sont lues dans un fichier de paramètres (donc inconnues du compilo). Je ne me rappelle plus exactement des résultats, mais en fonction des valeurs du couples is_a_zero et is_b_zero, on se retrouvait à préférer les versions avec test ou sans test sans vraiment de logique. Ça me faisait penser à un compilo qui prévoit un certain nombre de combinaisons de branches, mais pas toutes (sur quelle base? Aucune idée). Du coup, quand on passe par une combinaison de branchements prévue, ça va vite, mais quand la combinaison n'est pas prévue, il faut se taper une série de tests conditionnels, et c'est lent ; ça irait plus vite de faire les multiplications par zéro.

    J'en ai conclu que le résultat de telles optimisations était au mieux inégal, et au pire imprévisible.