Pages : 1
#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 ???