Popularity
7.1
Stable
Activity
0.0
Declining
167
1
11
Monthly Downloads: 29,637
Programming language: Elixir
License: MIT License
Tags:
Code Analysis
Latest version: v0.2.4
exprof alternatives and similar packages
Based on the "Code Analysis" category.
Alternatively, view exprof alternatives based on common mentions on social networks and blogs.
-
credo
A static code analysis tool for the Elixir language with a focus on code consistency and teaching. -
dotenv-linter
⚡️Lightning-fast linter for .env files. Written in Rust 🦀 -
excoveralls
Coverage report tool for Elixir with coveralls.io integration. -
DepViz
A visual tool to help developers understand Elixir recompilation in their projects
Bot detection and prevention for Elixir/Phoenix applications
Paraxial.io is bot detection and prevention for Elixir/Phoenix applications. Dealing with scrapers, card cracking, or credential stuffing? We take care of that.
Promo
paraxial.io
Do you think we are missing an alternative of exprof or a related project?
Popular Comparisons
README
ExProf

A simple code profiler for Elixir using eprof.
It provides a simple macro as a wrapper for Erlang's :eprof profiler.
Install
Add :exprof
to deps
section of mix.exs
.
def deps do
[ {:exprof, "~> 0.2.0"} ]
end
Usage
import "ExProf.Macro", then use "profile" macro to start profiling. It prints out results, and returns them as list of records, along with the result of the profiled block.
defmodule SampleRunner do
import ExProf.Macro
@doc "analyze with profile macro"
def do_analyze do
profile do
:timer.sleep 2000
IO.puts "message\n"
end
end
@doc "get analysis records and sum them up"
def run do
{records, _block_result} = do_analyze
total_percent = Enum.reduce(records, 0.0, &(&1.percent + &2))
IO.inspect "total = #{total_percent}"
end
end
Run
An example to use in iex console.
$ iex -S mix
..
iex(1)> SampleRunner.run
message
FUNCTION CALLS % TIME [uS / CALLS]
-------- ----- --- ---- [----------]
'Elixir.IO':puts/2 1 0.86 1 [ 1.00]
io:o_request/3 1 1.72 2 [ 2.00]
io:put_chars/2 1 1.72 2 [ 2.00]
erlang:group_leader/0 1 1.72 2 [ 2.00]
io:request/2 1 2.59 3 [ 3.00]
io:execute_request/2 1 2.59 3 [ 3.00]
'Elixir.SampleRunner':'-run/0-fun-0-'/0 1 2.59 3 [ 3.00]
'Elixir.IO':map_dev/1 1 3.45 4 [ 4.00]
erlang:demonitor/2 1 4.31 5 [ 5.00]
io:io_request/2 1 6.03 7 [ 7.00]
io:wait_io_mon_reply/2 1 6.90 8 [ 8.00]
'Elixir.IO':puts/1 1 8.62 10 [ 10.00]
unicode:characters_to_binary/2 1 11.21 13 [ 13.00]
timer:sleep/1 1 14.66 17 [ 17.00]
erlang:monitor/2 1 31.03 36 [ 36.00]
"total = 100.0"
Add a Mix Task
An example to use as mix tasks.
defmodule Mix.Tasks.Exprof do
@shortdoc "Profile using ExProf"
use Mix.Task
import ExProf.Macro
def run(_mix_args) do
profile do: do_work(2)
end
defp do_work(n) do
:timer.sleep(n * 1000)
end
end