fix(fuzzer): убрал лишний ре-рендер таблицы результатов durante benchmark

renderResults() вызывался каждые 600мс и пересоздавал всю таблицу — при
100+ стратегиях UI зависал. Теперь таблица перерисовывается только при
появлении нового результата или завершении бенчмарка.
This commit is contained in:
Dushnilin
2026-08-27 16:24:56 +03:00
parent cd85e3e169
commit 1f2b7edd0d
2 changed files with 28 additions and 2 deletions
@@ -1399,6 +1399,9 @@ export function renderStrategyFuzzerModal(ruleNames: string[] = []) {
};
// ── Polling & Execution Logic ─────────────────────────────────────────────
let lastRenderedCount = 0;
let lastRenderedFinishedAt = 0;
const pollStatus = async () => {
if (isPolling) return;
isPolling = true;
@@ -1409,7 +1412,18 @@ export function renderStrategyFuzzerModal(ruleNames: string[] = []) {
isRunning = res.data.running;
updateProgressUI(res.data);
renderResults(res.data);
// Only re-render results when new results arrive or benchmark finishes
const resultCount = res.data.results?.length || 0;
const finishedAt = res.data.finished_at || 0;
if (
resultCount !== lastRenderedCount ||
finishedAt !== lastRenderedFinishedAt
) {
renderResults(res.data);
lastRenderedCount = resultCount;
lastRenderedFinishedAt = finishedAt;
}
if (!isRunning) {
stopPolling();
@@ -1599,6 +1613,8 @@ export function renderStrategyFuzzerModal(ruleNames: string[] = []) {
showToast(_('Strategy benchmark started'), 'success');
(startBtn as HTMLButtonElement).disabled = false;
isRunning = true;
lastRenderedCount = 0;
lastRenderedFinishedAt = 0;
startPolling();
} else {
const errMsg = !res.success ? res.error : _('Unknown error');