Scriptbench v3.0.0 | Free & Open-source heavy duty graphing benchmarker!

Scriptbench v3.0.0




A free & open-source full featured Benchmarker inspired and on-par with Benchmarker, built using roblox-ts and React.

Available on GitHub and Creator Store.

What is this?

This is a plugin which allows to easily view and compare performance for functions with graphs, tables, and a microprofiler!

Showcase

Features

Compared to alternatives

This plugin is as (sometimes more) convinient

  • Free & open-source
  • Built using roblox-ts and React (GOATs)
  • Fully Light Mode & Dark Mode compatible!
  • Includes Tables, Histogram/Graphs, and a microprofiler!
  • Showcases Min, Max,Avg,10%,50%, and 100% stats.
  • Render with Steps, Lines, or Splines!

Building

Build guides are available in the GitHub Repository.


I hope this plugin can be of help to you, and thank you for reading :smiley:

78 Likes

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.

The implementation is fully open source here: scriptbench/src/graph/index.tsx at main · AsynchronousAI/scriptbench · GitHub

2 Likes

v1.1.0 coming soon!

Improved data accuracy

Provides significantly more accurate results, which allows for less tests needing to be run.

This can be accomplished by updating how outliers are excluded, with some other minor tweaks.

Updated Graphics.


Lines now display with a more amplified gradient, and automatic scaling labels. Labels are also coming to the microprofiler…

ZIndex bugs are also patched.

Settings menu.

The settings menu will allow you to adjust the colors of the graphs, prioritized statistics, and more customizability to be added soon!

Some screenshots from Light Mode


2 Likes

This looks great!
But how do I use it exactly?

So far, I got a blank screen.

Oops :sweat_smile:, could you send me the output logs, it should not be blank.

I just tried an install from the creator store on my local machine and it worked fine.

1 Like
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.

1 Like

Also, the plugin button is currently non-clickable when the viewport is not open.
This can be fixed by setting PluginToolbarButton.ClickableWhenViewportHidden to true.

1 Like

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.

1 Like

Thanks, I have fixed these issues and will publish them to the creator store on the next release.

1 Like

Scriptbench v1.1.0 is out!

Updated UI!

Settings

You can adjust how the colors are generated and what statistics you prefer!

More statistics!

The MAD (Mean Absolute Deviation), Mode (most frequent), and the Standard Deviation (variation) are now visible!

Adjustable window!

You can now customize the sizing of different panes to your liking!

Pin MicroProfiler blocks!

By far my favorite feature of this update is the ability to pin MicroProfiler blocks to the sidebar & view them in the graphs.

Tons of minor improvements:

  • Disabled plugin running in runtime, and can now be triggered from scripts (thanks @AlexanderLindholt)
  • Improved accuracy by changing how outliers are excluded, in the future I plan to update this again.
  • Alot of code cleanup (still room for improvement)
  • and much more…
1 Like

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.

4 Likes

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!

1 Like

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.

This is already implemented :smile: !

1 Like

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.


As you can see, there are two StdDev. One is in the wrong place.
The bottom Empty Table is also missing such a stat.

I will get this fixed soon, thanks.

Suggestion:
Make this display always be visible when the mouse is in the histogram.
You shouldn’t have to hover over the tiny lines.

1 Like

The latest update should have fixed this issue!