News Grower

Независимое покрытие AI, стартапов и технологий.

Как Rust реализует трейт-объекты и почему dyn Trait медленнее дженериков

Спросите разработчика: «Почему dyn Trait медленнее дженериков?», в 9 из 10 случаях услышите: «Потому что косвенный вызов через vtable». Один дополнительный переход по указателю, промах по кешу, вот и вся разница. Звучит убедительно, и кстати процентов на десять правда.Настоящая цена динамической диспетчеризации не в...

Автор: morett1m (Beget) Оригинальный источник
Как Rust реализует трейт-объекты и почему dyn Trait медленнее дженериков

Спросите разработчика: «Почему dyn Trait медленнее дженериков?», в 9 из 10 случаях услышите: «Потому что косвенный вызов через vtable». Один дополнительный переход по указателю, промах по кешу, вот и вся разница. Звучит убедительно, и кстати процентов на десять правда.Настоящая цена динамической диспетчеризации не в самом прыжке через vtable, а в том, что этот прыжок прячет от оптимизатора. LLVM видит непрозрачный call по указателю и пасует. Не может встроить тело, не может раскрутить цикл, не может протащить константу через границу вызова. Один косвенный вызов и целый каскад оптимизаций становится невозможным.Но чтобы понять, почему так происходит, нужно сначала разобраться, как dyn Trait устроен внутри. Что лежит в этом толстяке, как выглядит vtable в памяти, и чем всё это отличается от того, что делает компилятор с дженериками.

Продолжить следить за темой

Переходите к связанным материалам, страницам сущностей и активным линиям сюжета.

[Перевод] Почему мы ещё не нашли сигналы инопланетной жизни? Интервью с астрономом

[Перевод] Почему мы ещё не нашли сигналы инопланетной жизни? Интервью с астрономом

Вселенная остаётся безмолвной. Несмотря на десятки лет поисков, мы ещё ни разу не обнаружили сообщений от нечеловеческих форм жизни. Одно из потенциальных объяснений этого предл...

Производящая функция моментов: что это и как она используется в анализе распределений

Производящая функция моментов (moment-generation functions) - это функция, которая служит альтернативным способом задания распределения вероятностей случайной величины.

Инженерия найма: причины карго-культа

Инженерия найма: причины карго-культа

Найм окончательно сломан. На него ругаются и кандидаты, и рекрутеры. А ещё постоянно винят в проблемах друг друга. Вот только найм сломан очень давно. И есть целый ряд историчес...

Конец дешёвых ПК и мировой кризис. Придётся экономить

Конец дешёвых ПК и мировой кризис. Придётся экономить

Подорожание комплектующих изменило рынок. Тут происходит много странных на первый взгляд явлений: выходят ноутбуки с процессорами от телефонов (!?), появляются материнки на стар...

Особенности и ловушки модели памяти в Go: тайны синхронизации. Часть 1

Особенности и ловушки модели памяти в Go: тайны синхронизации. Часть 1

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

Практика автоматизации 1С — какие темы Инфостарт разбирает на апрельских вебинарах

Практика автоматизации 1С — какие темы Инфостарт разбирает на апрельских вебинарах

В апреле у Инфостарта идет серия бесплатных вебинаров по автоматизации процессов в 1С. С фокусом на практические сценарии: производство, инфраструктура, аналитика, документообор...

Похожие статьи

Еще материалы, которые пересекаются по тегам, источнику или категории.

[Перевод] Почему мы ещё не нашли сигналы инопланетной жизни? Интервью с астрономом

[Перевод] Почему мы ещё не нашли сигналы инопланетной жизни? Интервью с астрономом

Вселенная остаётся безмолвной. Несмотря на десятки лет поисков, мы ещё ни разу не обнаружили сообщений от нечеловеческих форм жизни. Одно из потенциальных объяснений этого предл...

Производящая функция моментов: что это и как она используется в анализе распределений

Производящая функция моментов (moment-generation functions) - это функция, которая служит альтернативным способом задания распределения вероятностей случайной величины.

Инженерия найма: причины карго-культа

Инженерия найма: причины карго-культа

Найм окончательно сломан. На него ругаются и кандидаты, и рекрутеры. А ещё постоянно винят в проблемах друг друга. Вот только найм сломан очень давно. И есть целый ряд историчес...

Конец дешёвых ПК и мировой кризис. Придётся экономить

Конец дешёвых ПК и мировой кризис. Придётся экономить

Подорожание комплектующих изменило рынок. Тут происходит много странных на первый взгляд явлений: выходят ноутбуки с процессорами от телефонов (!?), появляются материнки на стар...

Еще материалы от Habr

Свежие публикации и продолжение темы от той же редакции.

Открыть страницу источника
[Перевод] Почему мы ещё не нашли сигналы инопланетной жизни? Интервью с астрономом

[Перевод] Почему мы ещё не нашли сигналы инопланетной жизни? Интервью с астрономом

Вселенная остаётся безмолвной. Несмотря на десятки лет поисков, мы ещё ни разу не обнаружили сообщений от нечеловеческих форм жизни. Одно из потенциальных объяснений этого предл...

Производящая функция моментов: что это и как она используется в анализе распределений

Производящая функция моментов (moment-generation functions) - это функция, которая служит альтернативным способом задания распределения вероятностей случайной величины.

Инженерия найма: причины карго-культа

Инженерия найма: причины карго-культа

Найм окончательно сломан. На него ругаются и кандидаты, и рекрутеры. А ещё постоянно винят в проблемах друг друга. Вот только найм сломан очень давно. И есть целый ряд историчес...

Конец дешёвых ПК и мировой кризис. Придётся экономить

Конец дешёвых ПК и мировой кризис. Придётся экономить

Подорожание комплектующих изменило рынок. Тут происходит много странных на первый взгляд явлений: выходят ноутбуки с процессорами от телефонов (!?), появляются материнки на стар...