Skip to content

refactor: кэширование разрешения имени функции (CodeNameResolver)#6

Merged
Alexandr153 merged 1 commit intoissue-1from
issue-4
Apr 3, 2026
Merged

refactor: кэширование разрешения имени функции (CodeNameResolver)#6
Alexandr153 merged 1 commit intoissue-1from
issue-4

Conversation

@Alexandr153
Copy link
Copy Markdown
Collaborator

📌 Что сделано

  • добавлен CodeNameResolver для разрешения имени функции по code object
  • реализовано кэширование (code -> resolved_name)
  • убрана повторяющаяся дорогая операция gc.get_referrers(...) из hot-path
  • RawEventDispatcher теперь использует CodeNameResolver вместо прямого разрешения имени

⚡ Проблема

Ранее имя функции определялось через gc.get_referrers(...) на каждом raw-событии.

Это приводило к:

  • высокой нагрузке
  • деградации производительности
  • лишним обходам GC в hot-path

🚀 Решение

  • введён отдельный компонент CodeNameResolver
  • expensive операция выполняется только один раз на code object
  • результат кэшируется
  • fallback: code.co_name

🧠 Архитектурные изменения

  • логика разрешения имени вынесена из RawEventDispatcher
  • добавлен локальный кэш внутри CodeNameResolver
  • соблюдён SRP:
    • RawEventDispatcher → orchestration
    • CodeNameResolver → разрешение имени + кэш

🔗 Связано

Closes #4

@Alexandr153 Alexandr153 changed the base branch from main to issue-1 April 3, 2026 09:26
@Alexandr153 Alexandr153 merged commit ed1dc54 into issue-1 Apr 3, 2026
3 checks passed
@Alexandr153 Alexandr153 deleted the issue-4 branch April 3, 2026 09:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

perf: Дорогая операция gc.get_referrers в _resolve_real_name (требуется кеширование)

1 participant