2010-12-11 7 views
1

Disons que vous avez 32 000 enregistrements avec 89 octets/enregistrement stockés dans un fichier TSV.Efficacité de l'algorithme Python

Vous collez ceci dans un dictionnaire Python ou un hachage Ruby et vous indexez avec une clé de 9 octets qui est elle-même un champ dans chaque enregistrement. En d'autres termes, vous avez un dictionnaire avec 32 000 paires clé-valeur, où chaque clé est de 9 octets et chaque valeur est de 89 octets. Sur un ordinateur moderne tel qu'un MacBook Pro 2.4Ghz, quelle est l'estimation approximative du temps moyen nécessaire pour récupérer un enregistrement, et quel est le pire des cas en notation thêta? L'implémentation dans Ruby est-elle plus lente que dans Python?

+9

Comment vous référencer? –

+4

Pourquoi ne faites-vous pas simplement le test? Franchement, cela dépend de tellement de choses que vous devriez essayer de savoir. – caveman

+4

Les ordinateurs se moquent de chiffres comme 32000. Hashing 32000 touches prend 3ms sur mon ordinateur portable de 2 ans ... –

Répondre

4

Un dictionnaire peut généralement récupérer des clés en temps constant afin que la réponse à votre question soit "très rapide". La seule façon dont cela serait lent si beaucoup de vos clés entrent en collision, mais vous pouvez éviter cela en utilisant une bonne fonction de hachage. La fonction de hachage par défaut sera probablement bien.

L'implémentation dans Ruby est-elle plus lente que dans Python?

Ruby est généralement plus lent dans les tests de performance que Python par un petit facteur. Je m'attends à ce que c'est probablement vrai ici aussi.

The Computer Language Benchmarks Game - Ruby vs Python

+0

À quel point est-il logique d'arrêter d'avoir cette course en mémoire? – mbm

+1

@mbm: Lorsque votre mémoire se remplit. –

+0

Garçon j'aime être un noob. Merci les gens! – mbm