`csv.reader` calls the state machine for every character needlessly
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 77.2k
- Forks
- 35.9k
- Métriques de merge des PR
- Métriques de PR en attente
Description
Bug report
Bug description:
The state machine:
https://github.com/python/cpython/blob/bbcb75c986c47887e6c0757e63d59cd7af544f39/Modules/_csv.c#L726
is called for every character processed by csv.reader:
Even putting aside sophisticated SIMD or branching optimizations, it could be more efficient.
Most time is likely to be spent in a field (IN_FIELD, IN_QUOTED_FIELD). It's more efficient to find interesting characters (ie: escapes, quotes) and just copy the whole slice in between.
CPython versions tested on:
CPython main branch
Operating systems tested on:
Linux
Linked PRs
- gh-138214
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez dans Modules/_csv.c, au niveau de la machine à états autour de la ligne 726, ainsi que dans le traitement de csv.reader autour des lignes 969-974. Examinez la PR liée gh-138214 avant de commencer, puis vérifiez que toute modification préserve le comportement de csv.reader tout en évitant les appels inutiles à la machine à états pour chaque caractère.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- c, python
- Domaine
- backend
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 25/100