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 ?
[^] # Re: Tout est référence
Posté par Duncan Idaho . En réponse au message Fonction : passage de référence. Évalué à 2.