Move type checks from switch cases to beginning of `_Py_Specialize_BinaryOp`
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 77.2k
- Forks
- 36k
- Métriques de merge des PR
- Métriques de PR en attente
Description
Feature or enhancement
Proposal:
_Py_Specialize_BinaryOp: https://github.com/python/cpython/blob/aeb9b65aa26444529e4adc7d6e5b0d3dd9889ec2/Python/specialize.c#L2380-L2443
uses
if (!Py_IS_TYPE(lhs, Py_TYPE(rhs))) {
break;
}
check inside every switch case which is redundant. Placing this check before switch results in same performance but less generated code. Compiler with -O3 option seems to not recognize it. Attaching generated machine code (clang, apple silicon) for old and new versions
new.txt
old.txt
Feel free to close this if not worth it.
Has this already been discussed elsewhere?
No response given
Links to previous discussion of this feature:
No response
Linked PRs
- gh-128311
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
Vérifiez d’abord gh-128311, car l’issue renvoie vers un travail déjà en cours. Lisez ensuite Python/specialize.c au niveau de _Py_Specialize_BinaryOp et comparez la sortie du compilateur jointe de old.txt et new.txt ; le travail est terminé lorsque les vérifications redondantes sont traitées de manière cohérente et que le code généré produit le résultat attendu.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- c
- Domaine
- compilers, performance
- Type d'issue
- Fonctionnalité
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Clairement spécifiée
- Accessibilité débutants
- 25/100