[Toulouse-pm] hash or array ?

Benoit Fleury Benoit.Fleury at etu.enseeiht.fr
Sun Feb 8 16:09:01 CST 2004


Michel Rodriguez wrote:

>On Thu, 5 Feb 2004, Benoit Fleury wrote:
>
>  
>
>>je ne sais pas si c'est le lieu pour ce genre de questions mais je ne
>>sais pas à qui m'adresser :)
>>Débutant en PERL, je lis et écris quelques scripts pour mon apprentissage.
>>Je me suis souvent posé la question suivante : dois-je preferer un hash
>>ou un tableau pour mes structures de donnees ?
>>mes éléments de réponse :
>>* hash : plus lisible au niveau du code, moins rapide ?
>>* array : moins lisible, plus rapide ?
>>Donc :
>>La question a-t-elle lieu de se poser ? (deja :) )
>>Si oui, comment faire un choix ?
>>    
>>
>
>Salut,
>
>La question n'a souvent pas lieu de se poser. Les donnees suggerent
>souvent d'elles-memes si tu dois utiliser un hash ou un tableau. Si tes
>donnees sont du genre identifiant (unique) => valeur, alors c'est un hash,
>sinon c'est un tableau.
>
>Un des seuls cas ou on a vraiment le choix c'est pour stocker l'equivalent
>de struct C. On peut soit utiliser un hash:my %struct= ( field1 => 'val1',
>field2 => 'val2'), soit un tableau: my( $FIELD1, $FIELD2)= (0..1); my
>@struct=( 'val1', 'val2'). Je preferes un hash, c'est plus naturel en
>Perl, mais c'est vraiment comme on veut, une des devises de Perl est
>TIMTOWTDI: There Is More Than One Way To Do It.
>
>Une remarque importante quand meme: ca m'etonnerais que tu tombes sur un
>cas ou la vitesse d'acces a un element d'un hash ou d'un tableau soit
>importante. Si tu veux que ton programme aille vite, commence par regarder
>si tes algos sont performants, si ils sont optimises tu peux passer de
>Perl a du C. Mais remplacer les hash par des tableaux ne te fera jamais
>gagner significativement en vitesse (je parle d'esperience ;--(
>
>--
>Michel Rodriguez
>Perl & XML
>http://www.xmltwig.com
>
>
>
>  
>
Merci encore pour cette réponse, je ne sais plus pourquoi je m'etais mis 
en tête que l'accès à un tableau
serait plus rapide.

-- Benoit Fleury




More information about the Toulouse-pm mailing list