Rich_Morin

Rich_Morin

Can we measure module and function usage?

I think it would be interesting and possibly useful to gather statistics on module and function usage. For example, when I did a quick check on module use in my code base, I got these numbers:

  • Enum.* (268)
  • Map.* (63)
  • String.* (303)

One way to get some numbers would be to run a program over Hex.pm’s collection of Elixir code. However, I’m not sure what the best approach would be for writing such a program. If anyone else finds this idea interesting, comments and suggestions would be welcome.

Most Liked

OvermindDL1

OvermindDL1

Could probably use mix xref to get the data? :slight_smile:

hauleth

hauleth

There is no support to count usage statisitcs for all functions, this is what you can do on your own, but there is support for counting usage of single particular functions, and this is mix xref callers.

Last Post!

Rich_Morin

Rich_Morin

Based on this page, I’ve done a bit of experimentation. The results are quite promising, but I’m confused about some usage details. Using IEx from the command line, I can get a List of Maps, eg:

$ cd .../apps/common
$ iex -S mix
...
iex(1)> Mix.Tasks.Xref.calls
[
  %{
    callee: {Common.Maps, :keyss, 1},
    caller_module: Common,
    file: "lib/common.ex",
    line: 46
  }, ... ]

What I’d like to do, however, is have one of my apps make this call for itself and all of the others, so that it can construct a display page, etc. I tried changing the current directory within IEx, but I still got the report for the original directory:

iex(2)> cd "../info_web"
iex(3)> Mix.Tasks.Xref.calls
[
  %{
    callee: {Common.Maps, :keyss, 1},
    caller_module: Common,
    file: "lib/common.ex",
    line: 46
  }, ... ]

So, I have two questions. First, is there a way to get the data for another app from within the same IEx session? Second (and more critically), how can I do all this from within one of my running apps? (Inquiring gnomes need to mine…)

Where Next?

Popular in Discussions Top

joeerl
I’m playing with Elixir - It’s fun. I think @rvirding does give Elixir courses these days. Re: files and database - when I given Erlang ...
New
pillaiindu
In django there is a cache framework backed by memcached. Rails also puts a lot of emphasis on caching, and even the idea of russian-doll...
New
chulkilee
Here are the list of HTTP client libraries/wrappers, and some thoughts on HTTP client in general. I’d like to hear from others how they w...
New
AstonJ
If so I (and hopefully others!) might have some tips for you :slight_smile: But first, please say which area you’re finding most challen...
New
tomekowal
Hey guys! I want to create a toy project that shows a chart of temperature over time and updates every 5 seconds. I feel LiveView is per...
New
nunobernardes99
Hi there Elixir friends :vulcan_salute: In a recent task I was on, I needed to check in two dates which of them is the maximum and which...
New
Rustixir
Hi everyone, im working on find best language/framework/system for high concurrency, high performance and stable performance after wor...
New

Other popular topics Top

jononomo
I am trying to figure out how Mix knows whether the environment is test, dev, or prod – where is this set? Thanks.
New
Darmani72
If I have a post route which an argument: post /my_post_route/:my_param1, MyController.my_post_handler How would get the post params ...
New
greenz1
I have a phoenix application from which a user can download multiple(5-6) files of size 1MB. I couldn’t find anything related to sending ...
New
SoCreat
i’m a new one to elixir which editor can i use vs code? or atom? Thanks! :smiley:
New
TunkShif
This post is an instruction guide to help you setup your Neovim for Elixir development from scratch. It includes general information on h...
274 42576 114
New
sergio
Kind of like when jquery came out, it was super necessary. Existing drag and drop libraries have a bunch of baggage to support old browse...
New

We're in Beta

About us Mission Statement