# 5f: Profiling support

## `+pi-heck` <a href="#pi-heck" id="pi-heck"></a>

Profiling utility.

#### Source

```hoon
++  pi-heck
    |=  [nam=@tas day=doss]
    ^-  doss
    =+  lam=(~(get by hit.day) nam)
    day(hit (~(put by hit.day) nam ?~(lam 1 +(u.lam))))
```

***

## `+pi-noon` <a href="#pi-noon" id="pi-noon"></a>

Sample trace.

#### Source

```hoon
++  pi-noon
  |=  [mot=term paz=(list path) day=doss]
  =|  lax=(unit path)
  |-  ^-  doss
  ?~  paz  day(mon (pi-mope mot mon.day))
  %=    $
      paz  t.paz
      lax  `i.paz
      cut.day
    %+  ~(put by cut.day)  i.paz
    ^-  hump
    =+  nax=`(unit path)`?~(t.paz ~ `i.t.paz)
    =+  hup=`hump`=+(hup=(~(get by cut.day) i.paz) ?^(hup u.hup [*moan ~ ~]))
    :+  (pi-mope mot mon.hup)
      ?~  lax  out.hup
      =+  hag=(~(get by out.hup) u.lax)
      (~(put by out.hup) u.lax ?~(hag 1 +(u.hag)))
    ?~  nax  inn.hup
    =+  hag=(~(get by inn.hup) u.nax)
    (~(put by inn.hup) u.nax ?~(hag 1 +(u.hag)))
  ==
```

***

## `+pi-mope` <a href="#pi-mope" id="pi-mope"></a>

Add sample.

#### Source

```hoon
++  pi-mope
  |=  [mot=term mon=moan]
  ?+  mot  mon
    %fun  mon(fun +(fun.mon))
    %noc  mon(noc +(noc.mon))
    %glu  mon(glu +(glu.mon))
    %mal  mon(mal +(mal.mon))
    %far  mon(far +(far.mon))
    %coy  mon(coy +(coy.mon))
    %euq  mon(euq +(euq.mon))
  ==
```

***

## `+pi-moth` <a href="#pi-moth" id="pi-moth"></a>

Count sample.

#### Source

```hoon
++  pi-moth
  |=  mon=moan  ^-  @ud
  :(add fun.mon noc.mon glu.mon mal.mon far.mon coy.mon euq.mon)
```

***

## `+pi-mumm` <a href="#pi-mumm" id="pi-mumm"></a>

Print sample.

#### Source

```hoon
++  pi-mumm
  |=  mon=moan  ^-  tape
  =+  tot=(pi-moth mon)
  ;:  welp
    ^-  tape
    ?:  =(0 noc.mon)  ~
    (welp (scow %ud (div (mul 100 noc.mon) tot)) "n ")
  ::
    ^-  tape
    ?:  =(0 fun.mon)  ~
    (welp (scow %ud (div (mul 100 fun.mon) tot)) "c ")
  ::
    ^-  tape
    ?:  =(0 glu.mon)  ~
    (welp (scow %ud (div (mul 100 glu.mon) tot)) "g ")
  ::
    ^-  tape
    ?:  =(0 mal.mon)  ~
    (welp (scow %ud (div (mul 100 mal.mon) tot)) "m ")
  ::
    ^-  tape
    ?:  =(0 far.mon)  ~
    (welp (scow %ud (div (mul 100 far.mon) tot)) "f ")
  ::
    ^-  tape
    ?:  =(0 coy.mon)  ~
    (welp (scow %ud (div (mul 100 coy.mon) tot)) "y ")
  ::
    ^-  tape
    ?:  =(0 euq.mon)  ~
    (welp (scow %ud (div (mul 100 euq.mon) tot)) "e ")
  ==
```

***

## `+pi-tell` <a href="#pi-tell" id="pi-tell"></a>

Produce dump.

#### Source

```hoon
++  pi-tell
  |=  day=doss
  ^-  (list tape)
  ?:  =(day *doss)  ~
  =+  tot=(pi-moth mon.day)
  ;:  welp
    [(welp "events: " (pi-mumm mon.day)) ~]
  ::
    %+  turn
      %+  sort  ~(tap by hit.day)
      |=  [a=[* @] b=[* @]]
      (lth +.a +.b)
    |=  [nam=term num=@ud]
    :(welp (trip nam) ": " (scow %ud num))
    ["" ~]
  ::
    %-  zing
    ^-  (list (list tape))
    %+  turn
      %+  sort  ~(tap by cut.day)
      |=  [one=(pair path hump) two=(pair path hump)]
      (gth (pi-moth mon.q.one) (pi-moth mon.q.two))
    |=  [pax=path hup=hump]
    =+  ott=(pi-moth mon.hup)
    ;:  welp
      [(welp "label: " (spud pax)) ~]
      [(welp "price: " (scow %ud (div (mul 100 ott) tot))) ~]
      [(welp "shape: " (pi-mumm mon.hup)) ~]
    ::
      ?:  =(~ out.hup)  ~
      :-  "into:"
      %+  turn
        %+  sort  ~(tap by out.hup)
        |=([[* a=@ud] [* b=@ud]] (gth a b))
      |=  [pax=path num=@ud]
      ^-  tape
      :(welp "  " (spud pax) ": " (scow %ud num))
    ::
      ?:  =(~ inn.hup)  ~
      :-  "from:"
      %+  turn
        %+  sort  ~(tap by inn.hup)
        |=([[* a=@ud] [* b=@ud]] (gth a b))
      |=  [pax=path num=@ud]
      ^-  tape
      :(welp "  " (spud pax) ": " (scow %ud num))
    ::
      ["" ~]
      ~
    ==
  ==
```

***


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.urbit.org/hoon/stdlib/5f.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
