Zamiel icon

Benchmark Mod

Zamiel | PRO | 11/18/17 05:33:58 PM UTC | 0 ⭐ | 646 👁️ | Never ⏰ | []
Lua |

2.28 KB

|

None

|

0 👍

/

0 👎

-- +---------------+
-- | Benchmark Mod |
-- |   by Zamiel   |
-- +---------------+
 
-- This is a mod that will benchmark two different functions to calculate
-- how much more efficient one function is over the other.
 
local mod = RegisterMod("test-benchmark", 1);
 
-- Benchmark configuration
mod.numTrials = 100000 -- This is how many times each of the two functions will be executed
 
-- Global variables
mod.sfx = SFXManager()
local averages = {}
 
-- ModCallbacks.MC_POST_GAME_STARTED (15)
function mod:PostGameStarted()
  Isaac.DebugString("MC_POST_GAME_STARTED")
 
  -- Get the two average times
  for i = 1, 2 do
    local totalTime = 0
    for j = 1, mod.numTrials do
      local startTime = Isaac.GetTime()
      if i == 1 then
        mod:Function1()
      elseif i == 2 then
        mod:Function2()
      end
      local endTime = Isaac.GetTime()
      local elapsedTime = endTime - startTime
      totalTime = totalTime + elapsedTime
    end
    local averageTime = totalTime / mod.numTrials
    Isaac.DebugString("The average time of function " .. tostring(i) .. " is: " .. tostring(averageTime))
    averages[i] = averageTime -- Store it for later
  end
 
  -- Compare the two average times
  local functionDifference = averages[1] - averages[2]
  Isaac.DebugString("The difference is: " .. tostring(functionDifference))
  local percent = functionDifference / averages[1] * 100
  percent = round(percent, 2)
  Isaac.DebugString("This is a difference of " .. tostring(percent) .. "%.")
end
 
-- The slower function
function mod:Function1()
  local sfx = SFXManager()
  sfx:Play(SoundEffect.SOUND_THUMBS_DOWN, 1, 0, false, 1) -- 267
end
 
-- The faster function
function mod:Function2()
  mod.sfx:Play(SoundEffect.SOUND_THUMBS_DOWN, 1, 0, false, 1) -- 267
end
 
-- Callback definitions
mod:AddCallback(ModCallbacks.MC_POST_GAME_STARTED, mod.PostGameStarted)
 
-- Welcome message
Isaac.DebugString("+-------------------------------+")
Isaac.DebugString("| Bencharmking mod initialized. |")
Isaac.DebugString("+-------------------------------+")
 
-- Miscellaneous helper functions
-- From: http://lua-users.org/wiki/SimpleRound
function round(num, numDecimalPlaces)
  local mult = 10^(numDecimalPlaces or 0)
  return math.floor(num * mult + 0.5) / mult
end

Comments