LINUX.ORG.RU

История изменений

Исправление KivApple, (текущая версия) :

У хештаблиц есть как минимум один конструкционный паттерн, который можно реализовать по-разному - хранить ли данные в самой таблице или хранить ли в таблице указатели на данные. Я не уверен, но кажется Rust использует первый подход, а C++ второй. В таком случае C++ получает штраф из-за большего количества аллокаций (и не важно перехешируем мы или нет - аллокация происходит на каждый добавляемый элемент в любом случае) и введения indirection.

C++: https://en.wikipedia.org/wiki/Hash_table#Separate_chaining

Rust: https://abseil.io/blog/20180927-swisstables

Исходная версия KivApple, :

У хештаблиц есть как минимум один конструкционный паттерн, который можно реализовать по-разному - хранить ли данные в самой таблице или хранить ли в таблице указатели на данные. Я не уверен, но кажется Rust использует первый подход, а C++ второй. В таком случае C++ получает штраф из-за большего количества аллокаций (и не важно перехешируем мы или нет - аллокация происходит на каждый добавляемый элемент в любом случае) и введения indirection.