From 5f0c46f0ea59119586298fa49fc540a85297cc4e Mon Sep 17 00:00:00 2001 From: Alexander Petrov Date: Fri, 10 Jul 2026 18:02:16 +0300 Subject: [PATCH] =?UTF-8?q?docs:=20=D0=B8=D0=B4=D0=B5=D1=8F=20span-=D0=BF?= =?UTF-8?q?=D1=80=D0=B8=D0=BC=D0=B8=D1=82=D0=B8=D0=B2=D0=BE=D0=B2=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D1=83=D0=B7=D0=BA=D0=B8=D1=85=20=D0=BF=D1=80?= =?UTF-8?q?=D1=8F=D0=BC=D0=BE=D1=83=D0=B3=D0=BE=D0=BB=D1=8C=D0=BD=D0=B8?= =?UTF-8?q?=D0=BA=D0=BE=D0=B2=20(TODO=20+=20fill-budget)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit При узкой стороне <= 8 линий chunked-rectfill проигрывает циклу _bgi_hspan_raw/_bgi_vspan_raw (подготовка ~340Т впустую, break-even n~9): либо fast-path в диспетчере, либо рецепт для пользователя — решать по профилю. Co-Authored-By: Claude Fable 5 --- docs/TODO.md | 8 ++++++++ docs/accel-fill-budget.md | 12 ++++++++++++ 2 files changed, 20 insertions(+) diff --git a/docs/TODO.md b/docs/TODO.md index 7f94f1b..acc43cd 100644 --- a/docs/TODO.md +++ b/docs/TODO.md @@ -105,6 +105,14 @@ Quick wins: Оптимизации (не сейчас): - [ ] gfx_line через accel для пологих диагоналей (runs ≥ 4-5 px) - [ ] композитные примитивы с одним W3-swap на операцию +- [ ] **span-примитивы для узких прямоугольников**: при узкой стороне + ≤ 8 линий chunked-rectfill проигрывает простому циклу + _bgi_hspan_raw/_bgi_vspan_raw (подготовка+precompute ~340Т уходят + впустую; break-even n≈9 — docs/accel-fill-budget.md). Варианты: + fast-path в диспетчере _gfx_rectfill256 («узкая сторона ≤ 8 → + цикл span'ов») или просто задокументировать рецепт для + пользователя. Делать по результатам профиля — если узкие + прямоугольники реально встречаются в горячем коде. ## Прочий backlog diff --git a/docs/accel-fill-budget.md b/docs/accel-fill-budget.md index 0716343..02e9b28 100644 --- a/docs/accel-fill-budget.md +++ b/docs/accel-fill-budget.md @@ -106,3 +106,15 @@ _bgi_hspan_raw/_bgi_vspan_raw (одна линия одной скобкой б вариантов libbgi. Кандидат для size-critical сборок (small 32КБ, как mdview2) и для программ с жёсткими требованиями к латентности прерываний. + +- **Span-примитивы для узких прямоугольников (узкая сторона ≤ 8).** + Break-even n≈9 означает: прямоугольник в 2..8 линий по узкой стороне + дешевле нарисовать циклом готовых span-примитивов + (_bgi_hspan_raw/_bgi_vspan_raw — одна линия одной скобкой, без + подготовки/precompute), чем через rectfill, где ~340Т подготовки + уходят впустую. Варианты: fast-path в диспетчере _gfx_rectfill256 + («узкая сторона ≤ 8 → цикл span'ов»; удорожает проверку диспетчера + на ~20-30Т) или оставить на усмотрение пользователя, задокументировав + рецепт. Делать по результатам профиля — если такие прямоугольники + встречаются в горячем коде (рамки, тонкие полосы, разделители). + Продублировано в docs/TODO.md (GFX: оптимизации).