Size: a a a

Эликсир и Вунш

2019 August 27

AB

Alexey Bolshakov in Эликсир и Вунш
но может помочь на этапе сбора информации, когда ты сначала складываешь в iolist и потом однократно делаешь из него бинарь, например
источник

SS

Sergey Samokhvalov in Эликсир и Вунш
типа substr?
источник

SS

Sergey Samokhvalov in Эликсир и Вунш
если нужна производительность, вот под такое я бы поискал возможность substr в эрланге, которая умеет работать с iolists. если нет, то написать можно самому
источник

SS

Sergey Samokhvalov in Эликсир и Вунш
вообще, тут конечно сильно зависит от того, какие это будут списки, и какую часть надо выделить. в зависимости от разных факторов, это может быть заведомо намного быстрее, или ненамного, по сравнению с iolists_to_binary с binary:part,
источник

SS

Sergey Samokhvalov in Эликсир и Вунш
вот к примеру, у тебя список вида ["abc", "abcdef", "defgh", "123"]. на входе. допустим, тебе нужно взять part(10, 4) — это как раз будет 3ий элемент
источник

SS

Sergey Samokhvalov in Эликсир и Вунш
это будет быстро
источник

SS

Sergey Samokhvalov in Эликсир и Вунш
или из одного взять часть — это тоже будет довольно таки быстро
источник

SS

Sergey Samokhvalov in Эликсир и Вунш
а если тебе нужно substr с большой длиной по списку из ["a", "b", "c", "d"] делать, то тут бесполезно
источник

AB

Alexey Bolshakov in Эликсир и Вунш
вообще я не утверждаю, что нужно делать преобразование. если я использую бинари, как память и в нее положены куски одинакового размера. и беру их при помощи binary.part. может быть io list из одинаковых кусков делать и выбирать из листа по индексу. вдруг этот лист не сильно много в памяти займет. тут замеры надо поделать. поисследовать. основная борьба на ХЛ у меня была именно с тем, что оно все в память не влезает
источник

SS

Sergey Samokhvalov in Эликсир и Вунш
из листа по индексу?
источник

SS

Sergey Samokhvalov in Эликсир и Вунш
нет, у листа нет операции index
источник

SS

Sergey Samokhvalov in Эликсир и Вунш
это односвязный список
источник

SS

Sergey Samokhvalov in Эликсир и Вунш
там чтоб выбрать n-ый элемент, нужно пройти от головы до него, это O(n) -ый алгоритм
источник

AB

Alexey Bolshakov in Эликсир и Вунш
ну я ж хз. вдруг у io листа есть такая особенность
источник

SS

Sergey Samokhvalov in Эликсир и Вунш
если ты каким-то образом (например, через ниф-ки) сделал mutable binary, то в принципе тут особо ничего не ускоришь, при доступе
источник

SS

Sergey Samokhvalov in Эликсир и Вунш
ну какая особенность
источник

SS

Sergey Samokhvalov in Эликсир и Вунш
это обычный список
источник

SS

Sergey Samokhvalov in Эликсир и Вунш
iolist — это пользовательский тип. подвид списков
источник

SS

Sergey Samokhvalov in Эликсир и Вунш
не более того
источник

AB

Alexey Bolshakov in Эликсир и Вунш
или вот еще вопрос - как узнать, сколько в ЕТС будет занимать элемент? это как то связано с тем, сколько будет на выхлопе erlang. term_to_binary?
источник