linux-BR.org

Notícias de software livre e tecnologias

Essa diferença de desempenho existe porque, se não o MyList, requer apenas 2 instruções de VM (load_global, to_bool), enquanto se Len (mylist) == 0 precisar de 5 instruções (load_global, load_fast, ligue, load_const, compare_op).Isso inclui a contagem de referência de objetos, as informações de tipo e o tamanho do objeto (necessário apenas para tipos de coleta, como listas, ditos, strings).Além desses campos, se o tipo cpython for do tipo de sequência, ele também precisará fornecer suas informações de tamanho atual ao tempo de execução.Para facilitar o tempo de execução do CPYTHON para acessar esses campos comuns em objetos de diferentes tipos, o CPython implementa uma hierarquia de objetos (também conhecida como modelo de herança).O diagrama a seguir resume todo esse modelo de objeto:
Como você pode ver, o objeto da lista contém suas informações de tamanho no campo OB_SIZE (herdado do PyvarObject).

Fonte: https://blog.codingconfessions.com/p/python-performance-why-if-not-list