Skip to content
YiBoard
Play

2026-10-26

Performance Benchmarks: How Fast We Are

Board first paint, move response, and AI think time: the numbers we measure on a mid-range phone and an older laptop, including the parts that are still not good.

#performance#engineering#benchmarks

Performance benchmarks for a browser board game come down to three numbers: how fast the board appears, how fast a placed stone registers, and how long the engine thinks. We measure all three on a mid-range Android phone from 2021 and a 2017 laptop, because those two machines describe most of the people who actually show up.

Publishing these numbers is a commitment. If a later release makes one of them worse, that is a regression we have to explain rather than quietly absorb.

What we measure and on what

  • Board first paint: time from navigation until the grid and coordinates are visible and clickable.
  • Move round trip: time from a tap or click to the stone appearing, including server validation on online games.
  • Engine think time: wall clock for the AI to return a move at the default 500 ms budget.
  • Idle cost: CPU and battery draw while the board is open but nothing is happening.

The phone is a Snapdragon 7 series device three years old, running Chrome. The laptop is a dual core i5 with integrated graphics, running Firefox. Both are tested on a throttled connection, since real visitors are rarely on a clean lab network.

The numbers as of this build

  • Board first paint: 1.1 s on the phone, 0.8 s on the laptop, measured with the cache cold.
  • Move round trip offline: under 16 ms, which is one animation frame.
  • Move round trip online: 90 to 140 ms on the phone over 4G, 60 to 90 ms on the laptop over home broadband.
  • Engine think time: 480 to 520 ms at the default budget, degrading to a shallower search rather than blocking.

The offline move number matters more than it looks. A board that takes two frames to respond feels laggy, and there is no way to explain that away in a review.

Where the time actually goes

Most of the first paint is not the board. It is the CSS, the font, and the framework bundle arriving and then being parsed. The board itself is a canvas draw of a few hundred lines, which is cheap once the JavaScript is running.

  • Roughly half of the cold first paint is network and parse time for the shared bundle.
  • About a fifth is font loading, which is why we ship a system font stack first.
  • The rest is hydration and the first canvas draw.

That breakdown is why the largest wins so far came from shipping less JavaScript rather than from optimising the drawing code. The work is described in performance work and the mobile specific fixes in mobile-first improvements.

The part we are not happy about

Spectator view is slower than playing. Rendering a second board plus the move list pushes the phone to about 45 frames per second during a fast game, and it gets worse when the comment pane is open. We are rewriting that view to render on demand rather than on every move.

Replay scrubbing has the same problem at a smaller scale. Dragging the slider through a hundred move game drops frames on the 2017 laptop. Both are on the list in spectator and commentator plans.

How we keep the numbers honest

  • Every build runs the board paint and move round trip checks in CI, and a regression past the threshold fails the build.
  • The engine budget is a hard cap. If the search cannot finish, it returns the best move found so far instead of taking longer.
  • We test on hardware we own rather than on emulated devices, because emulator timing flatters everything.

Benchmarks that only exist in a blog post decay within a month. The useful version is the one that runs on every commit and blocks a merge when it gets worse.

FAQ

How fast is the YiBoard AI compared with a server side engine?

It runs in your browser with a 500 ms think budget, so there is no network round trip and no queue. A server engine can search deeper, but it adds latency and a dependency on the connection. The trade is written up in a real engine in your browser.

Does the board run at 60 frames per second?

On a laptop from the last five years, yes. On a three year old mid-range phone it holds 60 during normal play and drops into the 40s in spectator view, which is the known gap.

Why does a game feel slow even when the numbers look fine?

Usually it is the connection, not the device. Online moves include server validation, so a weak signal shows up as delay between your tap and the stone appearing. Playing against the AI removes that hop, as explained in a real engine in your browser.

Do you publish these numbers after every release?

The CI thresholds are public in the repository and the roadmap notes the next round of work in performance work. We restate the headline numbers when a release moves one of them.

Play a free game on YiBoard

Related

Keep exploring

YiBoard (yiboardgame.com) — 中华棋类,浏览器即玩,免费无注册。 去下一局 · 更多博客 · 玩法指南