É sempre mais rápido usar string como chave em um dict?
Nistopágina, Vejo algo interessante:
Note que existe um caminho rápido para dicts que (na prática) lidam apenas com chaves str; isso não afeta a complexidade algorítmica, mas pode afetar significativamente os fatores constantes: com que rapidez um programa típico é concluído.
Então, o que isso significa exatamente?
Significa usar string como a chave é sempre mais rápida?
Se sim, porque?
Atualizar:
Obrigado pelas sugestões sobre otimização! Mas, na verdade, estou mais interessado na verdade simples do que se ou quando devemos fazer a otimização.
Atualização 2:
Obrigado pelas ótimas respostas, vou citar o conteúdo doligação fornecido por @DaveWebb aqui:
"...
ma_lookup é inicialmente definido para olookdict_string função (renomeada paralookdict_unicode no 3.0), que assume que tanto as chaves no dicionário quanto a chave que está sendo pesquisada são PyStringObject's padrão. Em seguida, ele pode fazer algumas otimizações, como atenuar várias verificações de erros, já que a comparação de string para string nunca gera exceções. Também não há necessidade de comparações de objetos ricos, o que significa que evitamos chamadasPyObject_RichCompareBool, e sempre use_PyString_Eq diretamente.
... "
Além disso, para os números do experimento, acho que o tamanho da diferença será ainda maior se não houver conversão int-to-string