From 5eee2cd4a06d4a33530615896d34a55bdb45d9ba Mon Sep 17 00:00:00 2001 From: mlemanczyk Date: Sun, 25 Jan 2026 01:35:19 +0100 Subject: [PATCH] k state repository performance improvement. We'll now flush the updates every so often, now. --- PerfectNumbers.Core/Persistence/KStateRepository.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/PerfectNumbers.Core/Persistence/KStateRepository.cs b/PerfectNumbers.Core/Persistence/KStateRepository.cs index 39013ee..2a8bd38 100644 --- a/PerfectNumbers.Core/Persistence/KStateRepository.cs +++ b/PerfectNumbers.Core/Persistence/KStateRepository.cs @@ -58,6 +58,8 @@ public sealed class KStateRepository : IDisposable }); } + private volatile int _flushCount; + public void Upsert(ulong prime, BigInteger k) { using var session = _store.For(new SimpleFunctions()).NewSession>(); @@ -65,7 +67,13 @@ public sealed class KStateRepository : IDisposable string valueString = k.ToString(CultureInfo.InvariantCulture); session.Upsert(keyString, valueString); session.CompletePending(true); - _store.Log.FlushAndEvict(wait: true); + var flushCount = ++_flushCount; + if (flushCount >= PerfectNumberConstants.ByDivisorStateSaveInterval) + { + _flushCount = 0; + _store.Log.FlushAndEvict(wait: true); + } + } public bool TryGet(ulong prime, out BigInteger value)