¿El método de paso de rango de Ruby causa una ejecución muy lenta?

Tengo este bloque de código:

date_counter = Time.mktime(2011,01,01,00,00,00,"+05:00")
@weeks = Array.new
(date_counter..Time.now).step(1.week) do |week|
   logger.debug "WEEK: " + week.inspect
   @weeks << week
end

Técnicamente, el código funciona, generando:

Sat Jan 01 00:00:00 -0500 2011
Sat Jan 08 00:00:00 -0500 2011
Sat Jan 15 00:00:00 -0500 2011
etc.

¡Pero el tiempo de ejecución es una basura! Se tarda aproximadamente cuatro segundos en calcular cada semana.

¿Hay alguna ineficiencia grotesca que me falta en este código? Parece bastante sencillo.

Estoy ejecutando Ruby 1.8.7 con Rails 3.0.3.

Respuestas a la pregunta(2)

Su respuesta a la pregunta