Your AI powered learning assistant

Эксперимент с Rust провалился - Статическая отправка затруднена | Prime реагирует

Неудачный эксперимент со статической отправкой Rust Первоначальные версии end basic service и end tracker использовали динамическую диспетчеризацию для поддержки абстрактных определений служб системного поиска. Это привело к использованию объектов Arc dine Foo для быстрого модульного тестирования. Однако использование статической диспетчеризации оказалось огромной ошибкой из-за трудностей с передачей типов и рассуждений о безопасности границ признаков.

"Monster Monstrosity" - Проблемы со статической отправкой "Чудовищность монстра" относится к сложной структуре кода, возникшей в результате реализации статической диспетчеризации. Это требовало повторяющихся объявлений в нескольких файлах, загрязняло исходные файлы ненужными деталями, отравляло уровень rest репликацией внутренних сведений о драйверах, делало невозможным эффективное составление типов транзакций и приводило к неэффективности в производстве.

Переключение назад: Динамическая диспетчеризация как решение Понимая, что статическая диспетчеризация замедляет разработку функций и вызывает проблемы с дизайном, такие как невозможность автономных вызовов базы данных вне транзакций; стало необходимым переключение обратно на динамическую диспетчеризацию

Упрощение хранилища значений ключей Заменяя параметры статического типа объектами динамических признаков, драйвер инкапсулирует определения полей и упрощает код. Это позволяет упростить реализацию таких функций, как асинхронная отправка данных, не затрагивая другие уровни.

"Повсеместность статической отправки" "Статическая диспетчеризация" в Rust обеспечивает абстракцию с нулевыми затратами, но требует затрат времени на программирование. Хотя он может подходить для ящиков общего назначения, для данного проекта он был неподходящим выбором из-за сложности и проблем с производительностью.

Показатели: Размер кода, двоичный размер, Время компиляции Рефакторинг уменьшил размер кода только в N tracker на 11 строк. Размеры двоичных файлов немного увеличились при динамической отправке из-за ограниченных возможностей оптимизации во время компиляции. Время постепенной сборки незначительно улучшилось - примерно с 12-13 секунд до чуть менее 12 секунд.