Daniel
а масштабируется оно скверно
Dmitry
что как бы сразу приводит к тому, что писать на хаскеле становится неприятно
Daniel
я понял
Dmitry
но
Dmitry
неприятно примерно так же, как просто писать на си, например
Daniel
на си очень неприятно писать
A64m
Dmitry
миллионы в секунду... ну можно же проэмулировать. по сути это примерно вставка/выборка из двух бинарных хипов
Daniel
это все принято писать на с/с++, но получается плохо
Daniel
Dmitry
если туда пишется аж по миллиону в секунду... проблемы будут в любом языке, кмк.
Dmitry
ну т.е вставка миллиона записей в секунду в как-то отсортированную коллекцию это вообще проблема
Dmitry
попробуйте вставить в том же постгресе в in-memory table столько
Dmitry
а ведь он на си написан.
Daniel
да ну, перестаньте
Daniel
постгрес не показатель, он с очень сложными структурами работает
Daniel
микросекундный
Daniel
параллелизация в рамках одного сервера - это обязательно
Alexander
Микросекундный - это если надо уложиться в диапазон от 1 микро до 1 милисекунды. А здесь по 1 операции на микросекунду получается, значит, надо уложиться до 1 микросекунды на операцию
Alexander
Или я ошибаюсь?
Dmitry
ну собственно что тут рассуждать - макет пишется быстрее, чем мы тут рассуждаем
Alexander
Мне это для самообразования :)
Daniel
мне надо с изучения хаскеля начинать написание макета
Alexander
Такие производительности достигаются на Хаскеле только с опытом
Dmitry
ну вообще не так всё грустно выглядит, даже если тупо на векторах поэмулировать
Alexander
Изначальный код на Хаскеле обычно "в лоб" и неэффективный.
Dmitry
обычно при размере коллекции в 1M repl норовил залипать, а сейчас, я смотрю, нет
Daniel
1М - это число элементов?
Dmitry
если сразу принять, что никаких там ADT, только тупо unboxed вектора и инты, то может всё не так уж плохо
Daniel
а, вот еще
Daniel
что в хаскеле с математикой 128 бит?
Daniel
а то 64 нужной точности не обеспечивают
Dmitry
целочисленной? ну есть Integer
Daniel
целочисленной, да
Dmitry
ну есть Integer, померяйте, хватит ли его производительности
A64m
тогда уж какой-нибудь http://hackage.haskell.org/package/data-dword
A64m
Integer тормозить будет
Dmitry
ну, в общем, мне кажется, это может работать, но правда это будет такой. довольно печальный хаскель.
Dmitry
хотя возможно печальный хаскель это веселее. чем си или плюсы
Dmitry
самое главное это как здесь бороться с gc
A64m
если все в анбоксед вектороах, вроде особо бороться и не с чем
Alexander
Alexander
Не очень понятно, если это целые числа.
Daniel
что именно не понятно?
Dmitry
стикеры тут не приветствуются
Andrei
Dmitry
короче, все составные части есть
A64m
не факт, что есть
Dmitry
написать синтетический тест с генератором, двордами и анбоксед векторами вроде недолго
A64m
с анбоксед коллекциями в хаскеле неважно дела обстоят
Dmitry
да может боксед прокатят тут.
A64m
т.е. их самостоятельно скорее всего придется делать на векторах или какой-то заброшенный код дорабатывать напильником
A64m
даже инстансы Vector/MVector для этих двордов придется самому писать
Dmitry
резюме такое - оптимизация в хаскелле требует опыта. а если опыт есть, то такие вопросы не спрашивают
Daniel
я понял, да
Dmitry
Dmitry
ну так, навскидку - на одном ведре 1M туплов (Int64,Int64) легко переваривается
Dmitry
за секунду.
Dmitry
ну т.е много меньше, чем за секунду, конечно
Dmitry
т.е генерируется и сортируется
Dmitry
так что перспективы неплохие.
саша
Dmitry
у него порог вхождения повыше будет
Maxim
Чем у хаскеля, лол?
Cheese
конечно
Maxim
Странные вы ребята
Cheese
Cheese
в Хаскеле самое сложное — математика, а она дружественная к человеку, в Расте же надо думать как процессор, это сложно
саша
если только после ассемблера
ну как-бы у раста две новый концепции в сравнении с %IMPERATIVE_LANG_NAME% - владение и заимствование. На хаскеле их чуть больше.
саша
Cheese
Cheese
саша
саша
понятно, что просто написать опердень на хаскеле будет в любом случае проще, но тут то нужен хайперфоманс