Configurar variables locales en una función en lugar de usar globales optimiza la función

En la documentación del módulo itertools encontré este comentario

def dotproduct(vec1, vec2):
    return sum(imap(operator.mul, vec1, vec2))

Nota, muchas de las recetas anteriores se pueden optimizar reemplazando las búsquedas globales con variables locales definidas como valores predeterminados. Por ejemplo, la receta del producto dot puede escribirse como:

def dotproduct(vec1, vec2, sum=sum, imap=imap, mul=operator.mul):
    return sum(imap(mul, vec1, vec2))

¿Cómo es?
Existe una aceleración notable y práctica (que podría equilibrar los inconvenientes de la firma de función más grande)?
En qué condiciones específicas sería relevante el uso de variables locales en un caso como el que se muestr

Editar Lo probé con timeit y hay alguna diferencia relevante.
Para dos listas de 40 elementos como vec1, vec2:

global lookup -> 3.22720959404
búsqueda local -> 3.19884065683

es decir, solo ca. 1% de ganancia.

Respuestas a la pregunta(1)

Su respuesta a la pregunta