function timing elixir

function - ¿Cómo podemos programar fácilmente llamadas de función en el elixir?



timing (1)

¿Cómo podemos programar fácilmente llamadas de función en el elixir?

¿Hay algún interruptor oculto en IEx para habilitar esto?


Puedes escribir un módulo 1 que puede medir una función dada. La siguiente función devuelve el tiempo de ejecución de una función dada en segundos:

defmodule Benchmark do def measure(function) do function |> :timer.tc |> elem(0) |> Kernel./(1_000_000) end end

Úsalo así:

iex> Benchmark.measure(fn -> 123456*654321 end) 9.0e-6

Si quieres usar eso para Benchmarking, entonces hay otra respuesta.

Un enfoque mejor que medir el tiempo de ejecución de una sola ejecución es medir las operaciones por período de tiempo. Esto toma el código bajo prueba y lo ejecuta repetidamente dentro de un período de tiempo determinado. Esta metodología produce resultados más precisos.

Hay una biblioteca llamada Benchwarmer que puedes usar para eso:

Agrega Benchwarmer a tus mix.exs

def deps do [ { :benchwarmer, "~> 0.0.2" } ] end

Simplemente pasa una función en línea:

iex> Benchwarmer.benchmark fn -> 123456*654321 end *** #Function<20.90072148/0 in :erl_eval.expr/5> *** 1.2 sec 2M iterations 0.61 μs/op [%Benchwarmer.Results{...}]