• [^] # Re: Tout est référence

    Posté par . En réponse au message Fonction : passage de référence. Évalué à 2.

    Cela signifie donc que mon problème ne vient pas de là. Pour confirmer ce qui se dit ici, si j'ai :
    h1 = Hash.new
    # population de h1 avec plein de trucs
    h2 = Hash.new
    # population de h2 avec plein de trucs
    # Calcul du cosinus
    STDOUT.puts cosinus(h1,h2)
    
    Avec une fonction cosinus :
    # Ce n'est pas vraiment une fonction de calcul du cosinus
    def cosinus(v1, v2)
     resultat = 0
     intersection = v1.keys & v2.keys # éléments commun à v1 et v2
     intersection.each do |cle|
     resultat = v1[cle] * v2[cle]
     end
     return resultat
    end
    
    Seule la référence à mes hash sera envoyé à /cosinus/ (pas de recopie dans v1 et v2, donc), donc les appels v1[cle] et v2[cle] se font sur h1 et h2. J'ai bon ? Si oui, je n'explique pas vraiment comment, à algorithme équivalent, mon programme en Perl est deux fois plus rapide que mon programme en ruby. Des pistes ?