Ask HN: Discrepancy between Lichess and Stockfish
20 points - yesterday at 7:44 PM
I’m trying to understand a discrepancy between Lichess’s analysis board and my own Stockfish setup.
On Lichess (browser-based analysis), Stockfish reports close to 1 MN/s on my Redmi Note 14 Pro. However, when I run Stockfish locally via a Python program using the native executable, I only see around 600 kN/s.
What’s confusing is that despite the higher reported speed, Lichess takes about 2:30 to reach depth 30, while my local setup reaches depth 30 in about 53 seconds, even though it reports a lower N/s. Lichess also appears much more “active” in terms of frequent evaluation updates.
I suspect this has to do with how N/s is measured or displayed (instantaneous vs average), differences in search configuration (continuous search vs restarts, MultiPV, hash reuse), or overhead from the way the engine is driven (e.g., UI or I/O throttling). It also raises the question of whether “depth 30” is directly comparable across different frontends.
Has anyone looked into how Lichess reports Stockfish speed, or why a setup showing higher N/s can still take significantly longer to reach the same nominal depth?
anematode
yesterday at 10:29 PM
Hi, I work on Stockfish! Likely what's going on is that your Lichess instance is running in MultiPV mode, which displays the top N moves (5 by default, iirc). This can be useful for analysis, but it leads to more time exploring disfavored lines, and therefore lower depth. The desktop version defaults to MultiPV = 1.
Viren6
yesterday at 10:52 PM
I also work on Stockfish, that is not the reason. The reason is because the SF17.1 is functionally different, there is no way to get these to match without changing the net option to be the same as the stockfish binary.
See https://tests.stockfishchess.org/tests/view/69515c60572093c1...
and https://github.com/lichess-org/lila/pull/18671
anematode
yesterday at 11:17 PM
Viren's been around a lot longer than I have, so I'd trust him instead ;) You can actually run the large net in Lichess (by selecting the larger engine in the dropdown) which would be dispositive.
tsoj
yesterday at 11:34 PM
I don't work on Stockfish, but I can suggest using ShashChess instead. It is Stockfosh, but on top of that, it has been improved to capture the spirit of the human ingenuity and creativity.
frenchtoast8
yesterday at 9:42 PM
Most of Lichess is open source, have you tried looking there to see how Lichess interacts with Stockfish? https://github.com/lichess-org
y-curious
yesterday at 10:00 PM
Confirm in the network tab that you are going 100% local on lichess. My shot in the dark (I don’t contribute to their codebase) is that you’re offloading some analysis to Fishnet[1]
I would rule that out first
1: https://lichess.org/get-fishnet
grumpopotamus
today at 1:59 AM
Have you compared the versions of Stockfish in each?
In Lichess I think you can also choose different eval nets. There's a small one and a big one. That will affect N/s.
Have you compared how many threads each are using?
Furthermore, Lichess Stockfish is a WASM build while your local Stockfish is a native binary executable.
Many have already mentioned number of variations will significantly affect time to a certain depth.
eterm
yesterday at 9:50 PM
The lichess one might be in "multi-line" mode
Viren6
yesterday at 10:39 PM
Lichess uses a smaller net by default. Default lichess net is custom made by stockfish to be small
HNLurker2
today at 10:32 AM
[dead]