¿Por qué es [] más rápido que list ()?

Recientemente comparé las velocidades de procesamiento de[] ylist() y me sorprendió descubrir que[] carrerasmás de tres veces más rápido quelist(). Hice la misma prueba con{} ydict() y los resultados fueron prácticamente idénticos:[] y{} ambos tomaron alrededor de 0,128 segundos / millón de ciclos, mientras quelist() ydict() tomó aproximadamente 0.428 segundos / millón de ciclos cada uno.

¿Por qué es esto? Hacer[] y{} (y probablemente() y'', también) inmediatamente devuelve copias de un literal de stock vacío mientras que sus contrapartes explícitamente nombradas (list(), dict(), tuple(), str()) ¿van a crear un objeto, tengan o no elementos?

No tengo idea de cómo difieren estos dos métodos, pero me encantaría descubrirlo. No pude encontrar una respuesta en los documentos o en SO, y la búsqueda de paréntesis vacíos resultó ser más problemático de lo que esperaba.

Obtuve mis resultados de tiempo llamandotimeit.timeit("[]") ytimeit.timeit("list()")ytimeit.timeit("{}") ytimeit.timeit("dict()"), para comparar listas y diccionarios, respectivamente. Estoy ejecutando Python 2.7.9.

Hace poco descubrí "¿Por qué si es verdadero más lento que si 1?"que compara el rendimiento deif True aif 1 y parece tocar un escenario similar literal-versus-global similar; quizás valga la pena considerarlo también.