Не возражаю, но желательно проsanity-checkайте это слегка сначала. The software is provided "as is", without any warranty короче
Читать полностью…на практике это будет означать еще пару имплементаций таблиц добавлять как у коллинза, но, конечно, не в точности как у коллинза, с тех пор сложнотаблицестроение продвинулось
Читать полностью…надо попробовать тогда в таких условиях посравнивать с другими таблицами из коллинзовской либы
Читать полностью…реальное приложение все время чет аллоцировать будет и даже если дерево вовсе не трогать приложение будет тормозить этим деревом об гц
Читать полностью…vht медленные на операциях union, intersect. там еще есть пространство для оптимизации
Читать полностью…вызывает, но один раз перед началом измерения пачки прогонов, а не после каждого прогона, просто чтобы все стартовали в равных условиях. так что сборка мусора будет учтена, но только сборка своего мусора, а не чужого ;)
Читать полностью…Ну вот тут я точно не согласен, вылезание из кеша меряет сколько кешмисов на лукап делает таблица, что имхо одна из самых важных деталей реализации
Читать полностью…хотя, если подумать, можно сделать таблицу более кэш-френдли особо ее не меняя. основная проблема же в том, что нужно прыгать непонятно куда-то в массив ключей. и для продолжения пробинга снова прыгать непонятно куда.
если сами ключи в массиве располагать также, как сейчас их индексы, то и следующие из того же ведра будут рядом и уже в кеше. для индикации удаленных и пустых ячеек еще массив завести
На картинках кстати ось y неправильно подписана, должно быть average time per lookup
Читать полностью…бывает также трейдоф между ростом и прочим, т.е. есть таблицы которые быстрее растить
Читать полностью…ну все операции из стандартного контейнерного набора там и не оптимизировались емнип. только лукап и вставка оптимизированы, все остальное токо первое приближение, так что там низко висащих фруктов должно быть полно
Читать полностью…Возможно чтобы делать на ней не только лукапы? Из доки:
This data structure performs especially well on binary operations like union and intersection. Additionally, benchmarks show that it is also (much) faster on insertions and deletions when compared to a generic size-balanced map implementation (see Data.Map).Читать полностью…
А нахрен она вообще нужна тогда, если на своей специализации сливает общему решению из соседнего же модуля.
Читать полностью…Не, тут я не спорю ни секунды, пытаться обгонять хештаблицу деревом где-нибудь на 100000+ бесполезно (ну кроме каких-то жестких коллизий может быть, и то не уверен)
Читать полностью…