Move type checks from switch cases to beginning of `_Py_Specialize_BinaryOp`
Ninguém assumiu esta issue ainda.
- Linguagem predominante
- Python
- Estrelas
- 77.2k
- Forks
- 36k
- Métricas de merge de PRs
- Métricas de PR pendentes
Descrição
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
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Direção de pesquisa
Verifique primeiro gh-128311, pois a issue aponta para um trabalho que já está em andamento. Em seguida, leia Python/specialize.c em _Py_Specialize_BinaryOp e compare a saída do compilador anexada de old.txt e new.txt; considera-se concluído quando as verificações redundantes forem tratadas de forma consistente e o código gerado produzir o resultado pretendido.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- c
- Domínio
- compilers, performance
- Tipo de issue
- Funcionalidade
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Status de atividade
- Estagnada
- Clareza
- Claramente especificada
- Facilidade para iniciantes
- 25/100