Size: a a a

2020 August 01

AA

A64m AL256m qn<co... in Haskell
я, кстати, его переписал в общих чертах с дотнетной имплементации, с которой харроп сравнивал
источник

AP

Artem Pelenitsyn in Haskell
A64m AL256m qn I0
также надо сравнить с хештаблицей из пакета https://hackage.haskell.org/package/impure-containers
может щас бокснутый вариант вообще не имеет смысла (хотя я ради анбоснутого варианта делал это все, как-то так получилось что бокснутый вариант тоже быстрее гуглотаблицы оказался)
Я вспомнил: я изучал этот пакет. Они используют hashtables в каком-то виде для своей реализации хэштаблиц. А это ооочень медленно даже сегодня
источник

AP

Artem Pelenitsyn in Haskell
A64m AL256m qn I0
я, кстати, его переписал в общих чертах с дотнетной имплементации, с которой харроп сравнивал
Я кстати не знаю кто такой Харроп, к сожалению. А то, что с дотнета, это полезно знать, спасибо. Вероятно там все документировано.
источник

AA

A64m AL256m qn<co... in Haskell
ну и бенчмарки надо получше сделать, сейчас-то они довольно однобокие, может в других аспектах там не все так весело
источник

AP

Artem Pelenitsyn in Haskell
A64m AL256m qn I0
также надо сравнить с хештаблицей из пакета https://hackage.haskell.org/package/impure-containers
может щас бокснутый вариант вообще не имеет смысла (хотя я ради анбоснутого варианта делал это все, как-то так получилось что бокснутый вариант тоже быстрее гуглотаблицы оказался)
> Data.HashMap.Mutable.Basic
>
> This whole module is mostly copied from the hashtables package.
источник

AP

Artem Pelenitsyn in Haskell
A64m AL256m qn I0
ну и бенчмарки надо получше сделать, сейчас-то они довольно однобокие, может в других аспектах там не все так весело
Мне кажется, это тоже верно в общем, но лучшее не должно быть врагом хорошего: хотелось бы хоть какую-то версию на хэкедже вначале
источник

A

Andrey in Haskell
короче, четко обозначить критерий релиза на хакадж..

ну и методично доделать..
источник

AP

Artem Pelenitsyn in Haskell
Andrey
короче, четко обозначить критерий релиза на хакадж..

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

A

Andrey in Haskell
после релиза фрагмента для серванта освободится окно для опенсорса, смогу его заполнить..

ну если по 30 минут в день тратить методично, то недели за 4 с момента старта можно довести до ума
источник

A

Andrey in Haskell
может, и больше, конечно..
источник

AP

Artem Pelenitsyn in Haskell
Andrey
после релиза фрагмента для серванта освободится окно для опенсорса, смогу его заполнить..

ну если по 30 минут в день тратить методично, то недели за 4 с момента старта можно довести до ума
Я был бы заинтересован поучаствовать, если что.
источник

AA

A64m AL256m qn<co... in Haskell
Artem Pelenitsyn
Я кстати не знаю кто такой Харроп, к сожалению. А то, что с дотнета, это полезно знать, спасибо. Вероятно там все документировано.
источник

AA

A64m AL256m qn<co... in Haskell
Artem Pelenitsyn
Я был бы заинтересован поучаствовать, если что.
по поводу этого https://github.com/klapaucius/vector-hashtables/issues/2
не думаю, что там какая-то польза от массива будет.
вот примитив - это то что нужно, всякие высокоуровневые либы для массивов типа вектора добавляют оверхед, типа того что вектор - это рендж на самом деле   и там лишние тормоза при вычислении индекса будут, то же самое с либами со всякими сложными многомерными индексами типа массива.
т.е. для удобства использования вектор для хранения данных это нормально, но массивы на которых сама таблица имплементирована лучше из примитива взять
источник

AP

Artem Pelenitsyn in Haskell
A64m AL256m qn I0
по поводу этого https://github.com/klapaucius/vector-hashtables/issues/2
не думаю, что там какая-то польза от массива будет.
вот примитив - это то что нужно, всякие высокоуровневые либы для массивов типа вектора добавляют оверхед, типа того что вектор - это рендж на самом деле   и там лишние тормоза при вычислении индекса будут, то же самое с либами со всякими сложными многомерными индексами типа массива.
т.е. для удобства использования вектор для хранения данных это нормально, но массивы на которых сама таблица имплементирована лучше из примитива взять
Спасибо! Я правильно понимаю, что primitive должен заменить vector в реализации, с вашей точки зрения?
источник

АХ

Алексей Худяков... in Haskell
A64m AL256m qn I0
по поводу этого https://github.com/klapaucius/vector-hashtables/issues/2
не думаю, что там какая-то польза от массива будет.
вот примитив - это то что нужно, всякие высокоуровневые либы для массивов типа вектора добавляют оверхед, типа того что вектор - это рендж на самом деле   и там лишние тормоза при вычислении индекса будут, то же самое с либами со всякими сложными многомерными индексами типа массива.
т.е. для удобства использования вектор для хранения данных это нормально, но массивы на которых сама таблица имплементирована лучше из примитива взять
Я вот недавно мерял производительность mwc-random заменяя unxboxed на primitive/storable/массив из primitive. Никакой разницы вообще
источник

AP

Artem Pelenitsyn in Haskell
Алексей Худяков
Я вот недавно мерял производительность mwc-random заменяя unxboxed на primitive/storable/массив из primitive. Никакой разницы вообще
Мне тоже кажется, что такие вещи не факт что дадут большой выигрыш. Библиотека уже быстрая. И ей нужен только интерфейс и немного документации для публикации.
источник

AA

A64m AL256m qn<co... in Haskell
Artem Pelenitsyn
Спасибо! Я правильно понимаю, что primitive должен заменить vector в реализации, с вашей точки зрения?
не заменить, а дополнить. весь механизм анбоксинга данных так и останется из вектора, те массивы что key и value
а те что hashCode, next, buckets, и refs взять из примитива.
лучше их вообще в один массив сделать, вероятно, как в дотнетной хештаблице
источник

AA

A64m AL256m qn<co... in Haskell
Алексей Худяков
Я вот недавно мерял производительность mwc-random заменяя unxboxed на primitive/storable/массив из primitive. Никакой разницы вообще
так хештаблица это другое дело, она кроме как индексировать массивы особо и не делает ничего
источник

AA

A64m AL256m qn<co... in Haskell
Artem Pelenitsyn
Мне тоже кажется, что такие вещи не факт что дадут большой выигрыш. Библиотека уже быстрая. И ей нужен только интерфейс и немного документации для публикации.
ну оформлять пакет мне не особо интересно, а переписать на примитив я планирую, так что наиболее вероятный мой вклад в этот пакет только такой
источник

AP

Artem Pelenitsyn in Haskell
A64m AL256m qn I0
ну оформлять пакет мне не особо интересно, а переписать на примитив я планирую, так что наиболее вероятный мой вклад в этот пакет только такой
Я понял, спасибо! Можно ли рассчитывать, что вы будете принимать PRs в свой репо?
источник