Benchmarks
The same apps, in four frameworks.
The same small apps written with MyGo's native UI, GPUI, GPUI Fast and egui, each the usual way of its framework, showing the same text in windows of the same size, and measured on the same Mac.
Starting and resting
A number and three buttons, then nothing to do: what an app costs before it does anything.
App size
A release build, with its symbols stripped.
- MyGo9.7 MB
- GPUI3.7 MB
- GPUI Fast6.3 MB
- egui8.7 MB
Startup
From starting the process until its first frame is drawn and its window is on screen.
- MyGo173 ms
- GPUI157 ms
- GPUI Fast163 ms
- egui163 ms
Memory at rest
The physical footprint of the process 5 seconds after its first frame.
- MyGo34.1 MB
- GPUI33.7 MB
- GPUI Fast34.6 MB
- egui58.4 MB
CPU at rest
The share of a core the process takes over the next 5 seconds, drawing nothing.
- MyGo0.01%
- GPUI0.42%
- GPUI Fast0.01%
- egui0.01%
Scrolling a long list
A log viewer: 100,000 virtualized rows of three texts each, scrolling 8 DIPs every frame.
CPU per frame
The time the whole process spent on the CPU, its threads and the graphics driver's, for each frame.
- MyGo2.71 ms
- GPUI2.54 ms
- GPUI Fast1.46 ms
- egui2.13 ms
Frame ratehigher is better
Frames a second. It stops at the display's refresh rate.
- MyGo60.0 fps
- GPUI60.0 fps
- GPUI Fast60.0 fps
- egui60.0 fps
Slowest frames
The 99th percentile of the time between frames: what the worst 1% of frames look like.
- MyGo16.8 ms
- GPUI18.6 ms
- GPUI Fast16.7 ms
- egui17.4 ms
Peak memory
The highest physical footprint of the process, as Activity Monitor shows it.
- MyGo111 MB
- GPUI93.8 MB
- GPUI Fast117 MB
- egui168 MB
A live dashboard
600 cells, each with its own background and a number that changes every frame.
CPU per frame
The time the whole process spent on the CPU, its threads and the graphics driver's, for each frame.
- MyGo5.71 ms
- GPUI13.9 ms
- GPUI Fast5.76 ms
- egui5.43 ms
Frame ratehigher is better
Frames a second. It stops at the display's refresh rate.
- MyGo60.0 fps
- GPUI60.0 fps
- GPUI Fast60.0 fps
- egui60.0 fps
Slowest frames
The 99th percentile of the time between frames: what the worst 1% of frames look like.
- MyGo16.8 ms
- GPUI18.5 ms
- GPUI Fast16.8 ms
- egui17.7 ms
Peak memory
The highest physical footprint of the process, as Activity Monitor shows it.
- MyGo138 MB
- GPUI106 MB
- GPUI Fast122 MB
- egui145 MB
Resizing a document
40 paragraphs, about 20,000 characters, wrapped again to a width that changes every frame.
CPU per frame
The time the whole process spent on the CPU, its threads and the graphics driver's, for each frame.
- MyGo4.92 ms
- GPUI3.03 ms
- GPUI Fast3.04 ms
- egui6.04 ms
Frame ratehigher is better
Frames a second. It stops at the display's refresh rate.
- MyGo60.0 fps
- GPUI60.0 fps
- GPUI Fast60.0 fps
- egui60.0 fps
Slowest frames
The 99th percentile of the time between frames: what the worst 1% of frames look like.
- MyGo16.8 ms
- GPUI18.6 ms
- GPUI Fast16.8 ms
- egui17.2 ms
Peak memory
The highest physical footprint of the process, as Activity Monitor shows it.
- MyGo138 MB
- GPUI104 MB
- GPUI Fast112 MB
- egui175 MB
Reading the results
- Shorter bars are better, but for frame rate. Each bar is the median of the runs: hover it for the lowest and the highest.
- Frame rate stops at the display's refresh rate: an app below it missed frames. Time between frames is taken as each frame starts, not as it reaches the screen.
- CPU time leaves out what the GPU does: two apps taking the same CPU may not cost the same to draw.
- The Mac was in ordinary use during the runs. The frameworks took turns, so that this weighs on them alike.
- CPU per frame has moved by as much as a third between full runs of the same build, more than the range of one run shows: read small gaps as ties.
- MyGo's list measures its rows, which may differ in height, where the uniform lists of GPUI and GPUI Fast and egui's rows take one height for all.
- GPUI Fast is a fork of GPUI that keeps what did not change between frames. Its list scrolls from outside the view, as a wheel does, so that its cached rows apply; the other scenes change every frame.
- MyGo, GPUI and GPUI Fast draw text with the system's font and egui with its own. The crates of GPUI and GPUI Fast come without widgets, so their buttons are styled elements, and without scroll bars.
- Measured
- November 5, 2026
- Machine
- Apple M5, 10 CPUs, 32 GB of memory, 2560 x 1664 Retina
- System
- macOS 27.0
- Frameworks
- MyGo 0.7.4, GPUI 0.2.2, GPUI Fast 0.1.13, egui 0.37.0
- Compilers
- Go 1.27.3, Rust 1.99.1
- Runs
- 5 of each scene, 600 frames each, frameworks taking turns