perf(model): сборка сущности без копий таблицы колонок - #152
Merged
Merged
Conversation
Охрана перед кэшированием: копия Колонки() не влияет на модель, правка служебных колонок видна приведению, поле и колонка ищутся каждый по своему имени, неизвестные поле и колонка дают исключение, идентификатор неизменяем. Исключения проверяются явной попыткой: ВыбрасываетИсключение() из asserts без фрагмента текста проходит и без исключения. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017UYvrFghKi7WmhoF3vvpyp
ОбъектМодели строит в конструкторе соответствия колонок по имени поля и по имени колонки, карту описаний типов и неизменяемый идентификатор; дальше они только читаются. Раньше на каждое значение каждой строки копировалась таблица колонок и заново строилась карта из восьми ОписаниеТипов. Соответствия ссылаются на строки самой таблицы, поэтому правка через Служебный_Колонки() видна и им. Публичный Колонки() по-прежнему отдает копию. РаботаСКоннекторами.ЗаполнитьКолонки обходит таблицу модели без копии. Замер, 219 строк, 12 колонок, пул сущностей заполнен: PostgreSQL 863 -> 407 мкс на строку, SQLite 859 -> 292. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017UYvrFghKi7WmhoF3vvpyp
ПривестиЗначениеПоля, ПолучитьПриведенноеЗначениеПоля и УстановитьЗначениеКолонкиВПоле с именем, которого нет в модели, бросают «В модели сущности <Тип> нет поля|колонки <Имя>» вместо ошибки обращения к полю Неопределено, текст которой зависит от локали. Тесты проверяют текст через ВыбрасываетИсключение. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017UYvrFghKi7WmhoF3vvpyp
Колонки() отдает саму таблицу модели, только для чтения; служебный Служебный_Колонки() удален - ОбработкаКоллекций и ЗаполнитьКолонки берут Колонки(). Поиск колонки - Найти по таблице модели вместо двух соответствий. Поле Идентификатор хранит ФиксированнуюСтруктуру, отдельное поле под нее не нужно. Замер, 219 строк, 12 колонок, пул сущностей заполнен: PostgreSQL 378 мкс на строку, SQLite 358 - на уровне варианта с соответствиями. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017UYvrFghKi7WmhoF3vvpyp
Описание метода говорит, что таблица колонок только для чтения, без подробностей реализации. Почему ОбработкаКоллекций ее все же меняет - в комментарии на месте изменения. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017UYvrFghKi7WmhoF3vvpyp
Индексы строятся в конструкторе, после заполнения таблицы; поиск колонки в ОбъектМодели идет по ним. ОбработкаКоллекций меняет у строк только тип колонки и тип ссылки, индексированные имена не трогает. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017UYvrFghKi7WmhoF3vvpyp
Contributor
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. Note Currently processing new changes in this PR. This may take a few minutes, please wait... ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (4)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
see #151