Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 04/02/2008, à 16:17

Naoko Hoshihara

python, unicode et performances

Bonsoir à  tous. Voilà , il y a un petit moment, j'avais commencé une petite application pour fureter un peu dans mes dictionnaires (de bons vieux fichiers textes de plus de 100.000 lignes), avec une belle GUI et compagnie.
A l'époque j'avais choisi Python, qui me semblait bien adapté à  ce que je voulais faire. Enfin, le tout restait quand même assez lent, un peu trop pour une utilisation agréable. Donc ==> optimisations !!!
Je profile mon code, le chronomètre dans tous les sens, je gagne un facteur 2 (pas si mal), mais c'est toujours pas ça. Quand je vois à  quelle vitesse tourne Awk, je me dis que quelque chose cloche quelque part dans mon code...
Aussi, désespérée, j'en reviens au plus basique : spliter toutes mes lignes !!

Et bien croyez moi ou pas, entre ce bout de code, qui passe par des chaines de caractères unicode

#! /usr/bin/python

import codecs

def main():
    f=codecs.open('edict','r','utf8')
    res=[]  
    for line in f:
        res=line.split(' ')

et celui-là , qui reste avec des bytestreams

#! /usr/bin/python

def main():
    f=open('edict','r')
    res=[]  
    for line in f:
        res=line.split(' ')

J'ai un rapport de 1 à  10 pour les temps d'exécution (module timeit).
Est-ce que quelqu'un pourrait m'expliquer d'o๠provient cette différence ??? Il n'y a donc pas moyen de faire un code rapide en restant le plus longtemps possible en unicode (c'est à  dire, entre la lecture du fichier et l'affichage sur écran), ou c'est moi qui ai loupé quelque chose ???