haskellru | Unsorted

Telegram-канал haskellru - Haskell

1756

https://combot.org/chat/-1001043143583 Ссылки на полезные ресурсы: https://ruhaskell.org/links.html ; Информация о мероприятиях: https://gist.github.com/qnikst/a96cac661be80d126d0829f2ced1916e

Subscribe to a channel

Haskell

но даже если токо биться о память таблица будет работать быстрее дерева, хотя критерион может этого и не увидеть пушто он все сборки мусора выкинет

Читать полностью…

Haskell

Как у тебя интмап медленне ордмапы получился?

Читать полностью…

Haskell

Вот для сравнения что было в 0.1.1.4, там хешмапа еще хорошо держалась. (Там приходится заменить VH.lookup' на fromMaybe 0 <$> VH.lookup, потому что первое внезапно аллоцирует)

Читать полностью…

Haskell

\g f -> f (g f)

Читать полностью…

Haskell

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

Читать полностью…

Haskell

Ну я не обязательно про полные коллизии когда хеши совпали, а про "hash mod size" коллизии

Читать полностью…

Haskell

так-то есть одна таблица, там дела ещё лучше чем у vht

Читать полностью…

Haskell

Ну я ж не говорю что v-h плохи, просто делать вывод что очень хороши на основании только этого бенча имхо ошибочно. Если агдисты поменяли и у них на реальном коде хорошо -- то и прекрасно

Читать полностью…

Haskell

ну и с коллизиями проблемы с производительностью у хешмапа будут токо жуже

Читать полностью…

Haskell

Нет; доберусь до компа попробую свой откопать. (И тут не то чтобы прямо жесткие требования, этот бенчмарк что-то то меряет, просто кмк реальные юз кейсы это не особо покрывает)

Читать полностью…

Haskell

у тебя есть ссылка на бенчмарк, который удовлетворяет требованиям?

Читать полностью…

Haskell

вчера релиз был у vh

Читать полностью…

Haskell

Есть stan. Ничего за него не скажу так как не пользуюсь. Есть альтернативные Prelude без частичных функций. Пользуюсь Universum. Норм.

Читать полностью…

Haskell

Хорошо. Но -Weverything

Читать полностью…

Haskell

-werror=incomplete-patterns?

Читать полностью…

Haskell

вылезание из кеша процессора прост превращает бенчмарк таблицы в бенчмарк памяти, на результаты которого довольно сложно повлиять меняя че-то в имплементации таблицы

Читать полностью…

Haskell

И вот разница между последовательными и рандомными ключами и поиском в порядке вставки и случайном. Это все vector-hashtables unboxed (0.1.2.0), но разные данные.

На небольших размерах разница небольшая, вероятно в бранч предикторе — при последовательных ключах разницы в порядке поиска нет (все в кешах; любой поиск завершается после ровно одной итерации пробинга), при рандомных ключах поиск в рандомном порядке не дает бранч предиктору выучить паттерн пробинга.

На средних размерах все кроме seq/unshuffled начинает страдать, вероятно потому что приходится ходить все в более далекие кеши, хардварный префетчинг ни с чем кроме seq/unshuffled (где доступ последовательный) не справляется.

На больших размерах ходить при кешмисах приходится уже в память, поэтому разница становится огромной, 40+ (!!!) раз между seq/unshuffled и random/shuffled на миллионах элементов (на моем железе, это все по идее должно сильно зависеть от памяти и кешей)

(https://gist.github.com/aadaa-fgtaa/12ad7c5828cdf00b9734d0d0b035b8e7)

Читать полностью…

Haskell

Так, вот моя попытка в более-менее нормальный бенчмарк: https://gist.github.com/aadaa-fgtaa/114620ab45c69a042f9996a6e7c4cf8a. И vector-hashtables == 0.1.2.0 наконец-то обходит всю иммутабельщину даже на крошечных размерах на этом бенче 🎉

Читать полностью…

Haskell

неправда, у него слишком длинное определение. Правильный ответ: owl — у него лучшее соотношение размер/прикольность

Читать полностью…

Haskell

(это на это должн был быть ответ)

Читать полностью…

Haskell

https://github.com/1Jajen1/Brokkr/tree/main/brokkr-hashtables

Читать полностью…

Haskell

ну, понятно, нужно больше бенчмарков

Читать полностью…

Haskell

всеж ходить по массиву быстрее, чем по списку

Читать полностью…

Haskell

да с коллизиями-то понятно, что плохо будет. но емнип в этом апексе выше ключи будут такие же, 1,2,3...

Читать полностью…

Haskell

пример типа, хэша и shuffle или что-то более подходящее

Читать полностью…

Haskell

Бенчмарк в vector-hashtables у вас кстати имхо очень сомнительный, если я правильно смотрю (я с телефона, мог что-то проглядеть):
- Ключи 1..n, hash @Int = id, поэтому вообще нет коллизий
- Ключи 1..n именно в этом порядке. hash @Int = id, поэтому доступ к buckets происходит строго последовательный, что весьма cache-friendly
- Поиск идёт в том же порядке что и вставка (то есть аллокация поэтому Entry), поэтому доступ к fhashCode, fkey и fvalue строго последовательный, опять же cache-friendly
- (это сейчас не влияет потому что коллизий нет, но для полноты) поиск/вставка всегда одинаковых ключей в одинаковом порядке, на не слишком больших размерах бранч предиктор должен между итерациями бенча выучить probe sequences, то есть не миспредиктить в этой ли ентри ключ или нужно искать дальше

Это наверное не полностью нереалистичный кейс, но все-таки я думаю что в большинстве реальных юз кейсов хотя бы что-то из этого не выполняется

Читать полностью…

Haskell

Но тоже иногда порет, но его хотя бы настроить можно. Stan вообще без руля рулит..

Читать полностью…

Haskell

Кто такие maybe-функции? Не head с tail-ом случайно?

Читать полностью…

Haskell

Дайте человеку нормально вопрос задать!

Читать полностью…

Haskell

Что забыли учесть? Что такое maybe-функция?

Читать полностью…
Subscribe to a channel