Popularity
7.1
Stable
Activity
0.0
Stable
177
1
11
Monthly Downloads: 31,077
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. -
ex_check
One task to efficiently run all code analysis & testing tools in an Elixir project. Born out of 💜 to Elixir and pragmatism. -
excellent_migrations
An Elixir tool for checking safety of database migrations. -
DepViz
A visual tool to help developers understand Elixir recompilation in their projects -
int_set
A time- and memory-efficient data structure for positive integers.
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
Promo
www.influxdata.com
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