Eu estive pensando nisso há algum tempo. Como o título diz, o que é mais rápido, a função real ou simplesmente aumentar para a metade da potência?
ATUALIZAR
Não se trata de otimização prematura. Isso é simplesmente uma questão de como o código subjacente realmente funciona. Qual é a teoria de como o código Python funciona?
Enviei um email a Guido van Rossum porque eu realmente queria saber as diferenças nesses métodos.
Meu email:
Existem pelo menos três maneiras de criar uma raiz quadrada no Python: math.sqrt, o operador '**' e pow (x, .5). Estou apenas curioso sobre as diferenças na implementação de cada uma delas. Quando se trata de eficiência, qual é melhor?
Sua resposta:
pow e ** são equivalentes; math.sqrt não funciona para números complexos e links para a função C sqrt (). Quanto a qual é mais rápido, não faço ideia ...
math.sqrt
é uma rotina mais otimizada (como é) e expressa a intenção com mais clareza, sempre deve ser preferida x**.5
. Não é uma otimização prematura saber o que você escreve e escolheu a alternativa que é mais rápida e oferece mais clareza de código. Nesse caso, você precisa argumentar igualmente bem por que escolheria as outras alternativas.