A pesar de eso, lo más importante es evitar en la medida de lo posible eval ya que es bastante más lento.
Al hacer una llamada a send la máquina virtual de ruby tiene que buscar el nombre del método que se le pasa como parámetro y ejecutarlo.
En cambio, al hacer un eval además de lo anterior la máquina virtual necesita parsear la cadena y después ejecutar el código.
Benchmark.bm{|x| x.report{100000.times{eval('Post.scopes')}}}
user system total real
0.410000 0.000000 0.410000 ( 0.410306)
Benchmark.bm{|x| x.report{100000.times{Post.send('scopes')}}}
user system total real
0.140000 0.000000 0.140000 ( 0.144820)
2 comentarios:
hello... hapi blogging... have a nice day! just visiting here....
Esta bien saberlo
Publicar un comentario