• [^] # Re: essayer Julia ?

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

    Le lien entre les maths et la programmation est ténu, en plus d'être souvent dangereux. L'idée d'adopter une pensée mathématique quand on code ne me semble pas une bonne idée du tout.

    Tu veux dire que les RBTree c'est plus lent qu'un mathématicien ne l'imaginerai (à cause du fait que ce soit une chiée de pointeurs avec donc des accès mémoires probablement très fragmentés qui pourrissent le cache)? Quelle surprise :p

    Pas forcément, tu peux déja optimiser énormément en restant à haut-niveau

    Qu'appelles-tu haut et bas niveau, en optimisation?

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

    par exemple, retourner un résultat par référence plutôt que par valeur

    Retourner une référence sur une structure plus petite plus petite que la taille d'un pointeur n'est pas une optimisation... donc ce n'est pas une optimisation "logique".
    En plus, cette optimisation la, elle dépend de la version du langage et de l'âge du compilo: si c'est du C++98, tu n'auras pas la move semantic et donc en moyenne (dans les cas ou, bien sûr, l'objet n'est pas construit par ta fonction) tu auras de meilleures perf qu'en passant par valeur, à cause du fait que tu auras des appels inutiles au constructeur et destructeur. Je dis bien, en moyenne, hein.
    Du coup, c'est plutôt faire la passation par valeur qui est une optimisation par rapport à l'historique.
    Ceci étant dit, j'ai rarement vu des retours de référence, sauf pour la surcharge d'opérateurs. En général, j'ai plutôt vu des retours de pointeurs (pas forcément mieux, je ne fais que constater) ce qui a le mérite d'être plus explicite, je dirais (et d'éviter une copie silencieuse potentiellement mal placée).

    tout ça s'est avéré relever de la magie noire ; tout fonctionne sans optimisation, mais dès qu'on est en O2 ou O3

    Si ton «optimisation» se base sur du cas indéfini, alors oui, tu risques d'être vite fait dans la merde quand le compilo se mets à interpréter différemment les choses.

    par exemple jouer avec le nombre et l'ordre des tests conditionnels

    Ça, ça sent le mélange d'opérateurs post/pré-incrémentation (ou décrémentation, pour ce que ça vaut)...

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