Rendimiento perfilado de len (set) frente a set .__ len __ () en Python 3 [duplicado]

Esta pregunta ya tiene una respuesta aquí:

¿Por qué la función 'len' de Python es más rápida que el método __len__? 2 respuestas

Mientras perfilaba la aplicación de mi Python, descubrí quelen() parece ser muy costoso cuando se usan conjuntos. Vea el siguiente código:

import cProfile

def lenA(s):
    for i in range(1000000):
        len(s);

def lenB(s):
    for i in range(1000000):
        s.__len__();

def main():
    s = set();
    lenA(s);
    lenB(s);

if __name__ == "__main__":
    cProfile.run("main()","stats");

De acuerdo con las estadísticas del perfilador a continuación,lenA() parece ser 14 veces más lento quelenB():

 ncalls  tottime  percall  cumtime  percall  filename:lineno(function)
      1    1.986    1.986    3.830    3.830  .../lentest.py:5(lenA)
1000000    1.845    0.000    1.845    0.000  {built-in method len}
      1    0.273    0.273    0.273    0.273  .../lentest.py:9(lenB)

¿Me estoy perdiendo de algo? Actualmente uso__len__() en lugar delen(), pero el código se ve sucio:

Respuestas a la pregunta(6)

Su respuesta a la pregunta