Skip to content

Commit

Permalink
Basic exposure of jit_enabled? data in system
Browse files Browse the repository at this point in the history
  • Loading branch information
PragTob committed Nov 16, 2023
1 parent 7548c86 commit f52f195
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 2 deletions.
14 changes: 13 additions & 1 deletion lib/benchee/system.ex
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,18 @@ defmodule Benchee.System do

alias Benchee.Conversion.Memory
alias Benchee.Suite
alias Benchee.Utility.ErlangVersion

@doc """
Adds system information to the suite (currently elixir and erlang versions).
"""
@spec system(Suite.t()) :: Suite.t()
def system(suite = %Suite{}) do
erlang_version = erlang()
system_info = %{
elixir: elixir(),
erlang: erlang(),
erlang: erlang_version,
jit_enabled?: jit_enabled?(erlang_version),
num_cores: num_cores(),
os: os(),
available_memory: available_memory(),
Expand Down Expand Up @@ -50,6 +53,15 @@ defmodule Benchee.System do

defp elixir, do: System.version()

@first_jit_version "24.0.0"
defp jit_enabled?(erlang_version) do
if ErlangVersion.includes_fixes_from?(erlang_version, @first_jit_version) do
:erlang.system_info(:emu_flavor) == :jit
else
false
end
end

defp num_cores do
System.schedulers_online()
end
Expand Down
17 changes: 16 additions & 1 deletion test/benchee/system_test.exs
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
defmodule Benchee.SystemTest do
use ExUnit.Case, async: true

alias Benchee.Suite
import ExUnit.CaptureIO
import Benchee.System

alias Benchee.Suite
alias Benchee.Utility.ErlangVersion

test ".system adds the content to a given suite" do
system_info = system(%Suite{})

Expand Down Expand Up @@ -121,4 +123,17 @@ defmodule Benchee.SystemTest do
assert warning =~ ~r/not.*check.*protocol.*consolidat/i
end
end

# It may be compiled in a way that it doesn't but in the CI and dev machines it should be fine
test ".jit_enabled? should say true for versions > 24.0.0" do
system_data = system(%Suite{}).system
jit_enabled? = system_data.jit_enabled?
erlang_version = system_data.erlang

if ErlangVersion.includes_fixes_from?(erlang_version, "24.0.0") do
assert jit_enabled?
else
refute jit_enabled?
end
end
end

0 comments on commit f52f195

Please sign in to comment.