Powered by AppSignal & Oban Pro

StromBench - MotionMark

motionmark.livemd

StromBench - MotionMark

Mix.install([
  {:jason, "~> 1.4"},
  {:vega_lite, "~> 0.1.6"},
  {:kino_vega_lite, "~> 0.1.7"}
])

alias VegaLite, as: Vl
alias Jason
Jason

Intro

The point of this test is purely to ensure that we are in fact seeing fairly stabile values when nothing is happening on the laptop.

Transform the data

dirname = "/Users/me/Sites/personal/energy_efficiency/recordings/raw/motionmark/"

sets =
  dirname
  |> File.ls!()
  |> Enum.map(fn filename ->
    set =
      "#{dirname}/#{filename}"
      |> File.read!()
      |> String.trim()
      |> String.split("\n")
      |> Enum.with_index(1)
      |> Enum.map(fn {line, i} ->
        line
        |> String.split(", ")
        |> Enum.map(fn val -> Integer.parse(val) |> elem(0) end)
        |> then(fn [timestamp, value] -> %{"timestamp" => timestamp, "mW" => value} end)
        |> Map.put("label", Path.rootname(filename))
        |> Map.put("index", i)
      end)

    {filename, set}
  end)
  |> Enum.into(%{})
  |> Enum.reduce([], fn {_, set}, acc -> set ++ acc end)
[
  %{"index" => 1, "label" => "safari", "mW" => 267, "timestamp" => 1681393692},
  %{"index" => 2, "label" => "safari", "mW" => 80, "timestamp" => 1681393693},
  %{"index" => 3, "label" => "safari", "mW" => 12, "timestamp" => 1681393694},
  %{"index" => 4, "label" => "safari", "mW" => 541, "timestamp" => 1681393695},
  %{"index" => 5, "label" => "safari", "mW" => 362, "timestamp" => 1681393696},
  %{"index" => 6, "label" => "safari", "mW" => 330, "timestamp" => 1681393697},
  %{"index" => 7, "label" => "safari", "mW" => 187, "timestamp" => 1681393698},
  %{"index" => 8, "label" => "safari", "mW" => 176, "timestamp" => 1681393699},
  %{"index" => 9, "label" => "safari", "mW" => 176, "timestamp" => 1681393700},
  %{"index" => 10, "label" => "safari", "mW" => 85, "timestamp" => 1681393701},
  %{"index" => 11, "label" => "safari", "mW" => 72, "timestamp" => 1681393702},
  %{"index" => 12, "label" => "safari", "mW" => 70, "timestamp" => 1681393703},
  %{"index" => 13, "label" => "safari", "mW" => 99, "timestamp" => 1681393704},
  %{"index" => 14, "label" => "safari", "mW" => 93, "timestamp" => 1681393705},
  %{"index" => 15, "label" => "safari", "mW" => 88, "timestamp" => 1681393706},
  %{"index" => 16, "label" => "safari", "mW" => 87, "timestamp" => 1681393707},
  %{"index" => 17, "label" => "safari", "mW" => 84, "timestamp" => 1681393708},
  %{"index" => 18, "label" => "safari", "mW" => 78, "timestamp" => 1681393709},
  %{"index" => 19, "label" => "safari", "mW" => 95, "timestamp" => 1681393710},
  %{"index" => 20, "label" => "safari", "mW" => 88, "timestamp" => 1681393711},
  %{"index" => 21, "label" => "safari", "mW" => 78, "timestamp" => 1681393712},
  %{"index" => 22, "label" => "safari", "mW" => 121, "timestamp" => 1681393713},
  %{"index" => 23, "label" => "safari", "mW" => 77, "timestamp" => 1681393714},
  %{"index" => 24, "label" => "safari", "mW" => 73, "timestamp" => 1681393715},
  %{"index" => 25, "label" => "safari", "mW" => 74, "timestamp" => 1681393716},
  %{"index" => 26, "label" => "safari", "mW" => 69, "timestamp" => 1681393717},
  %{"index" => 27, "label" => "safari", "mW" => 71, "timestamp" => 1681393719},
  %{"index" => 28, "label" => "safari", "mW" => 87, "timestamp" => 1681393720},
  %{"index" => 29, "label" => "safari", "mW" => 73, "timestamp" => 1681393721},
  %{"index" => 30, "label" => "safari", "mW" => 71, "timestamp" => 1681393722},
  %{"index" => 31, "label" => "safari", "mW" => 73, "timestamp" => 1681393723},
  %{"index" => 32, "label" => "safari", "mW" => 78, "timestamp" => 1681393724},
  %{"index" => 33, "label" => "safari", "mW" => 75, "timestamp" => 1681393725},
  %{"index" => 34, "label" => "safari", "mW" => 77, "timestamp" => 1681393726},
  %{"index" => 35, "label" => "safari", "mW" => 71, "timestamp" => 1681393727},
  %{"index" => 36, "label" => "safari", "mW" => 72, "timestamp" => 1681393728},
  %{"index" => 37, "label" => "safari", "mW" => 1221, "timestamp" => 1681393729},
  %{"index" => 38, "label" => "safari", "mW" => 94, "timestamp" => 1681393730},
  %{"index" => 39, "label" => "safari", "mW" => 94, "timestamp" => 1681393731},
  %{"index" => 40, "label" => "safari", "mW" => 103, "timestamp" => 1681393732},
  %{"index" => 41, "label" => "safari", "mW" => 103, "timestamp" => 1681393733},
  %{"index" => 42, "label" => "safari", "mW" => 96, "timestamp" => 1681393734},
  %{"index" => 43, "label" => "safari", "mW" => 116, "timestamp" => 1681393735},
  %{"index" => 44, "label" => "safari", "mW" => 92, "timestamp" => 1681393736},
  %{"index" => 45, "label" => "safari", "mW" => 95, "timestamp" => 1681393737},
  %{"index" => 46, "label" => "safari", "mW" => 93, "timestamp" => 1681393738},
  %{"index" => 47, "label" => "safari", "mW" => 90, ...},
  %{"index" => 48, "label" => "safari", ...},
  %{"index" => 49, ...},
  %{...},
  ...
]
Vl.new(width: 750, height: 250)
|> Vl.data_from_values(sets)
|> Vl.encode_field(:color, "label")
|> Vl.mark(:bar, tooltip: true)
|> Vl.encode_field(:x, "label")
|> Vl.encode_field(:y, "mW", aggregate: :sum)
Vl.new(width: 750, height: 250)
|> Vl.data_from_values(sets)
|> Vl.encode_field(:color, "label")
|> Vl.mark(:line, tooltip: true)
|> Vl.encode_field(:x, "index", type: :temporal)
|> Vl.encode_field(:y, "mW", type: :quantitative)
|> Vl.encode_field(:color, "label", type: :nominal)