This is great, ive been trying to make my own benchmarker plugin but never finished it, I waa wondering how you managed to get the non-uniform shaped “spikes” in the graph while still having uistrokes and gradient work?
I was able to have gradients under the graph by instead of having one frame rotated to make a line, I rather had two frames (one for X, another for Y) each combined and another frame below with with the UIGradient.
cloud_125183599344026.scriptbench.include.node_modules.@rbxts.ReactLua.node_modules.@jsdotlua.scheduler.forks.SchedulerHostConfig.default:139: cloud_125183599344026.scriptbench.include.node_modules.@rbxts.ReactLua.node_modules.@jsdotlua.scheduler.forks.SchedulerHostConfig.default:116:
------ Error caught by React ------
Requested module experienced an error while loading
------ Error caught by React ------
cloud_125183599344026.scriptbench.benchmark:217 function GetBenchmarkName
cloud_125183599344026.scriptbench.app.App:92
cloud_125183599344026.scriptbench.app.App:95 function App
cloud_125183599344026.scriptbench.include.node_modules.@rbxts.ReactLua.node_modules.@jsdotlua.react-reconciler.ReactFiberHooks.new:3162 function renderWithHooks
cloud_125183599344026.scriptbench.include.node_modules.@rbxts.ReactLua.node_modules.@jsdotlua.react-reconciler.ReactFiberBeginWork.new:204 function renderWithHooks
cloud_125183599344026.scriptbench.include.node_modules.@rbxts.ReactLua.node_modules.@jsdotlua.react-reconciler.ReactFiberBeginWork.new:1570 function mountIndeterminateComponent
cloud_125183599344026.scriptbench.include.node_modules.@rbxts.ReactLua.node_modules.@jsdotlua.react-reconciler.ReactFiberBeginWork.new:3479 function beginWork
cloud_125183599344026.scriptbench.include.node_modules.@rbxts.ReactLua.node_modules.@jsdotlua.react-reconciler.ReactFiberWorkLoop.new:245
cloud_125183599344026.scriptbench.include.node_modules.@rbxts.ReactLua.node_modules.@jsdotlua.react-reconciler.ReactFiberWorkLoop.new:1960
cloud_125183599344026.scriptbench.include.node_modules.@rbxts.ReactLua.node_modules.@jsdotlua.react-reconciler.ReactFiberWorkLoop.new:1845
cloud_125183599344026.scriptbench.include.node_modules.@rbxts.ReactLua.node_modules.@jsdotlua.react-reconciler.ReactFiberWorkLoop.new:1794
cloud_125183599344026.scriptbench.include.node_modules.@rbxts.ReactLua.node_modules.@jsdotlua.react-reconciler.ReactFiberWorkLoop.new:930
cloud_125183599344026.scriptbench.include.node_modules.@rbxts.ReactLua.node_modules.@jsdotlua.react-reconciler.ReactFiberWorkLoop.new:955
cloud_125183599344026.scriptbench.include.node_modules.@rbxts.ReactLua.node_modules.@jsdotlua.scheduler.Scheduler:303
cloud_125183599344026.scriptbench.include.node_modules.@rbxts.ReactLua.node_modules.@jsdotlua.scheduler.Scheduler:259
cloud_125183599344026.scriptbench.include.node_modules.@rbxts.ReactLua.node_modules.@jsdotlua.scheduler.forks.SchedulerHostConfig.default:80 function doWork
cloud_125183599344026.scriptbench.include.node_modules.@rbxts.ReactLua.node_modules.@jsdotlua.scheduler.forks.SchedulerHostConfig.default:103 function performWorkUntilDeadline
Oh okay, this is an error from requiring an existing .bench file in your place. I will make the process of requiring softer so it doesnt crash the entire plugin next time.
Also, the plugin button is currently non-clickable when the viewport is not open.
This can be fixed by setting PluginToolbarButton.ClickableWhenViewportHidden to true.
Also I see that the plugin runs while the game is running in Studio.
If you didn’t know, plugins are actually re-loaded every time you play and stop playing the game in Studio. So at the very start of your plugin code, it’d be nice if you added:
local RunService = game:GetService("RunService")
if RunService:IsRunMode() then return end
This is because this plugin has no reason to run at runtime.
As a purchaser of the paid BoatBomber benchmarker plugin, which this is clearly is inspired by, I can confirm that this is just a more polished version of BoatBomber’s plugin.
A few months ago I contacted BoatBomber about bugs in his plugin, and some small feature requests. He responded after a few days, saying that he would implement it when he had time. Seems like he’s a busy man and/or has some other priorities, because it’s been months like I said and still no progress. My concern is that I paid for the plugin.
On the other hand, this is free, and I hope that you keep maintaining it despite that.
Thanks for an awesome resource!
But with that aside, there are a few issues and missing QoL features:
When windows are resized, they don’t save their new size.
Benchmark results are not saved.
The standard-deviation (StdDev) on the left side is buggy and doesn’t seem to be apart of the expand/collapse containers.
It’s essentially required to input the same name for the benchmark twice, because the module has to be named for organization purposes, and you also have to input it in the code. I’d say just use the module name (minus the .bench part), instead of requiring a Name value in the code.
It’s only possible to return 1 parameter in the Parameter function. If you utilize tuples, you can allow for an infinite number of custom parameters.
Very good and useful! I hope you continue to update it and have donation options. I believe that in the future there will be an increase in programmers looking for free and more updated options for a benchmark plugin, very good, keep updating!
Thank you for your support, and I have many plans for this plugin!
I added the majority of your recommendations into GitHub Issues, but I do have follow-up about some of them.
I am not able to reproduce this issue, could you send me a screenshot of this? This update did have a rewrite of the expand/collapse containers and that could be the cause.
Thank you! I added a GitHub Sponsors if you feel the need to support, but at the moment I do not want to pressure anyone to donate this early in development.