Skip to content

Instantly share code, notes, and snippets.

@stravant
Created August 15, 2021 20:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save stravant/30d1d592b199c87e2b732317d969d04a to your computer and use it in GitHub Desktop.
Save stravant/30d1d592b199c87e2b732317d969d04a to your computer and use it in GitHub Desktop.
Test perf of array based vs dict based Signal class
local ASignal = require(game:GetService("ServerStorage").ASignal)
local FSignal = require(game:GetService("ServerStorage").FSignal)
local function FireMany(sig)
sig:Connect(function() end)
sig:Connect(function() end)
sig:Connect(function() end)
sig:Connect(function() end)
sig:Connect(function() end)
sig:Connect(function() end)
sig:Connect(function() end)
sig:Connect(function() end)
sig:Fire()
sig:Fire()
end
local function ConnectDisconnectMany(sig)
local c1 = sig:Connect(function() end)
local c2 = sig:Connect(function() end)
local c3 = sig:Connect(function() end)
local c4 = sig:Connect(function() end)
local c5 = sig:Connect(function() end)
local c6 = sig:Connect(function() end)
local c7 = sig:Connect(function() end)
local c8 = sig:Connect(function() end)
c1:Disconnect()
c2:Disconnect()
c3:Disconnect()
c4:Disconnect()
c5:Disconnect()
c6:Disconnect()
c7:Disconnect()
c8:Disconnect()
end
return {
ParameterGenerator = function()
end;
Functions = {
["Fire Many Array"] = function(Profiler, RandomNumber)
FireMany(ASignal.new())
end;
["Fire Many Dict"] = function(Profiler, RandomNumber)
FireMany(FSignal.new())
end;
["ConnectDisconnect Array"] = function(Profiler, RandomNumber)
FireMany(ASignal.new())
end;
["ConnectDisconnect Dict"] = function(Profiler, RandomNumber)
FireMany(FSignal.new())
end;
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment