📎 Webclip
Dicas de desempenho do Python - Parte 01
O texto reúne recomendações práticas para escrever código Python mais rápido. Ele insiste no uso de recursos embutidos, de estruturas e módulos mais adequados para cada tarefa, e lembra que às vezes o ganho vem de mover trabalho para C/C++ ou para código externo quando o desempenho exigir.
Fichamento#
- Funções internas em Python tendem a ser muito rápidas porque são escritas em C.
- Para juntar muitas strings,
join()é preferível a usar+repetidamente, já que cada concatenação cria uma nova string. - Atribuição múltipla, como
x, y = y, x, troca variáveis de forma mais rápida e elegante do que usar uma variável temporária. - Variáveis locais são recuperadas mais depressa que variáveis globais, então o texto recomenda evitar
globalquando possível. - Para testar se algo existe em uma sequência, o uso de
iné descrito como limpo e rápido. - Importar módulos só quando forem necessários pode distribuir o custo de carregamento, embora isso não melhore o desempenho total.
- Em laços infinitos,
while 1é apresentado como uma forma de loop mais rápida do quewhile True. - List comprehensions podem substituir muitos blocos
forewhile, com ganho de velocidade e, em muitos casos, melhor legibilidade. xrange()é indicado para sequências longas porque gera valores sob demanda e economiza memória.- Generators também economizam memória e podem melhorar o desempenho por produzirem valores quando são pedidos.
- O módulo
itertoolsé destacado como eficiente para iteração e combinação, como no caso de permutações. bisectpermite inserir elementos em listas ordenadas sem precisar chamarsort()de novo.- Listas em Python são arrays, o que torna acesso por índice constante, mas torna custosa a inserção no início; para inserções e remoções nas duas extremidades, o texto sugere
deque. dictesetsão adequados para testar pertencimento porque usam tabela hash e podem oferecer busca em tempo próximo de O(1).sort()nativo é rápido, e o texto recomenda transformar os dados antes de ordenar quando for preciso usar uma ordem personalizada.- Decorators podem ser usados para cachear resultados e memorizar valores já calculados, como em uma função Fibonacci.
- O GIL impede que várias threads executem bytecodes Python ao mesmo tempo, então threads não aceleram automaticamente o código em máquinas multi-core.
- Quando a documentação oficial não basta, o texto recomenda olhar o código-fonte do Python para entender estruturas de dados e algoritmos.
