Scheduler - A performance measurement tool

What’s this?

This is “Scheduler”, a performance measurement tool for non-ecs, built entirely with Vide & Pebble for the UI, which also used by Jabby. Its heavily inspired by Jabby which is made for ecs like JECS & ECR.
This profiler provides developers with a clear and interactive, this might can be alternative of microprofiler.
If your using ecs, this tool might not recommended for you, you should use Jabby instead of this.
microprofiler from roblox is still the best for measuring performance due its much more details

Showcase

On Studio (Test Mode & O2)

In Live Game

Installation

You can install Scheduler on Wally(highly recommended), or through the latest release .rbxm file from Github.

GitHub | Wally | v0.1.3

Usage

-- ## Universal
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local scheduler = require(ReplicatedStorage:WaitForChild("scheduler"))
local begin_profiler, end_profiler = scheduler.profiler.Begin, scheduler.profiler.End

-- ## For Server
local server = scheduler.server()
server.init(scheduler.profiler)
-- note: use server.allow(player) to grant permission to use scheduler.

-- test, 60fps 16.66ms x 100 = ~1.66s
RunService.PostSimulation:Connect(function()
	begin_profiler("Server.PostSimulation.100_Frames")
	for _=1,1e2 do
		task.wait()
	end
	end_profiler("Server.PostSimulation.100_Frames")
end)

-- ## For Client
local client = scheduler.client()
client.init()
client.bind_to(Enum.KeyCode.F3) -- bind to F3 keycode to toggle scheduler ui
-- note: you able to use client.toggle_widget() to open the ui manually instead of .bind_to().

-- test, 60fps 16.66ms x 100 = ~1.66s
RunService.PostSimulation:Connect(function()
	begin_profiler("Client.PostSimulation.100_Frames")
	for _=1,1e2 do
		task.wait()
	end
	end_profiler("Client.PostSimulation.100_Frames")
end)

Playground

You can tests it through this link to test it or download .rbxl file from releases.

Credits

  • creators of Vide.
  • alicesaidhi, the person who made Jabby & Pebble
  • CavefulGames/jiwonz, for LimeSignal lib.
  • anexpia, for the BufferEncoder lib.

Quick Poll

  • currently using Jabby
  • using Benchmarker plugin
  • Liked it
0 voters
9 Likes

0.1.1


Fixes

  • Inaccurates on profiling
  • Issues when using with wally package
  • Able to toggle UI manually with .toggle_widget

Full Changelog: Comparing 0.1.0...0.1.1 · imezx/Scheduler · GitHub

2 Likes

a race condition issue were found on profiling, which causing some inaccurate time, this will be fixed later on 0.1.2.

1 Like

This looks super cool, will definitely be using, though, how do you access the CPU and GPU, and all the rest of the computer statistics?

1 Like

use Stats Service

1 Like

Thanks for the quick reply, have a great day! Downloading right now!

1 Like

I’ve never downloaded something using wally and implemented it in my game, sorry for the extra work, but could you give me a video tutorial on YouTube or tell me how to work with this, I’m so confused.

are you using rojo or argon for a game projects?

Rojo, I’ve already connected it to VSC, and I’ve also downloaded the plugin using the most recent version on GitHub.

make sure you have installed wally in ur device, type wally init on your project directory using cmd, then you should have wally.toml file on ur project. so thats how you setup wally.

to install a packages with wally, you have to add the package address in wally.toml under [dependencies], for example:

[package]
...
private = true -- for private projects to prevent being published accidently

[dependencies]
-- add here..
scheduler = "imezx/scheduler@0.1.1"

then run wally install with cmd every time you added or changes the dependencies.

Is there a way to do it without wally and solely with the GitHub download?

yeah you can use without wally by downloading the .rbxm file that provided on releases page (github), but i havent add .rbxm file for version 0.1.1 or upper.

Okay then, thanks for the help! I’ll get right on it!

there a link provided on playground (main post), which you can edit directly the place or download it due its copyable.

Okay, It’s in my game, in Replicated Storage, now what? How can I activate it

here i forward the link again, so now you can take a look for the sample usages.

this place is for wally based, but actually its the same as for non-wally.

There is nothing there, what I am supposed to be looking at :frowning:

i mean edit the place, there a 3 dots behind the title game, click it and it will show “edit” or download option. you can click edit.

Perfect, I’m in studio, where can I place your usage script and run it to test.

you can find the LocalScript (Client) under StarterPlayerScripts and the Script (Server) is under ServerScriptService, while the library is under ReplicatedStorage.

To test it, you can just play it directly on the studio and then press F3 key with your keyboard when your loaded in.