@proelixir

Страница 417 из 1045
Max
15.03.2017
06:40:49
сколько памяти потреблял — не успел посмотреть, думал дольше будет

290221 кусков получилось

shadowjack
15.03.2017
06:41:45
Если у тебя есть ссылка на кусок бинари, то вся бинарь не будет освобождена. Может по этому?

Александр
15.03.2017
06:43:07
вот попробуй, тут числа тупо разделлённые \n

Google
Александр
15.03.2017
06:43:17
у меня обрабатывает 8 секунд

на других языках та же операция жрёт меньше двух

на том же ruby

zk
15.03.2017
06:43:49
shadowjack
15.03.2017
06:44:49
А чего не хочешь лениво читать построено?

Александр
15.03.2017
06:44:49
zk, ты чего хочешь доказать?

лениво лучше отрабатывает

но binary:split не должен хуже регекспа работать, разве нет?

причём сильно хуже

там внутри функция на несколько экранов

которая работает рекурсивно как я понял и жрёт память

Max
15.03.2017
06:47:38
чёт уже больше 8 секунд висит

память ща всю сожрёт :)))

Google
Александр
15.03.2017
06:48:15
в /erts/emulator/beam/erl_bif_binary.c

do_binary_find

Max
15.03.2017
06:49:13
всё очень плохо, короче

так и не раздуплилась

Александр
15.03.2017
06:49:27
на самом деле там всё мне понятно кроме bfs->type

зачем несколько раз продублирован код

очень неэффективный с виду

zk
15.03.2017
06:50:33
кидай эту сишку сюда

дай ссылку на гх

Александр
15.03.2017
06:52:02
https://github.com/erlang/otp/blob/master/erts/emulator/beam/erl_bif_binary.c

я специально профилировал beam, в варианте с регэкспом и бинарным сплитом

бинарный сплит почти всё время тратит на сборку мусора

теми же node.js и ruby я такую же задачу профилировал, там хоть сплит большую часть времени занимал

пхп вообще за 400 мс делает (((

питон за 600 (очень меня удивил)

shadowjack
15.03.2017
06:53:55
А C так вообще не успеешь замерить.

Александр
15.03.2017
06:54:12
gprof

ещё как успеешь =)

ааа, про скорость обработки?

на Си я слабо пишу у меня получилось 800мс

Google
Александр
15.03.2017
06:55:38
на голанг 400, с компиляцией через gccgo

но 8+ секунд и сожранная вся память от небольшого файлика за пределами добра и зла

причём на си реализация у эрланга

shadowjack
15.03.2017
06:56:38
Это конечно баг, да.

Max
15.03.2017
06:57:18
пиши в рассылку

Александр
15.03.2017
07:04:51
ого, а там уже есть предложение по оптимизации производительности https://bugs.erlang.org/browse/ERL-374?jql=project%20%3D%20ERL

два дня назад добавил какой-то чувак

только про память он не сказал

Max
15.03.2017
07:08:44
забыл

shadowjack
15.03.2017
07:13:22
Да, я сейчас тоже попробовал в эрланге и оно тогос, сдохло.

Alexander
15.03.2017
07:18:32
и я не дождался результата

abc
15.03.2017
07:20:23
питон за 600 (очень меня удивил)
а какая версия 2 или 3 ?

Александр
15.03.2017
07:20:43
3.5, вторая чуть быстрее (на 50мс)

на ноде, для сравнения 1.2 секунды эта же операция =)

abc
15.03.2017
07:21:40
пили пулл реквест в OTP! ) будешь внукам рассказывать

Александр
15.03.2017
07:22:31
я бы с удовольствием, но я выше писал что в Сях я слаб, я в юности на C++ лабал, но не смог написать вариант быстрее чем на питоне

я попытаюсь конечно, но всё же надеюсь на помощь данного чатика

Max
15.03.2017
07:23:35
ну там скорее не C надо знать, а разбираться в виртуальной машине ерланга хорошо

немного разные вещи

Alexander
15.03.2017
07:24:47
В пятнадцатом году проблема уже обсуждалась http://erlang.org/pipermail/erlang-questions/2015-May/084670.html

Google
Александр
15.03.2017
07:25:41
не, до 15го года вообще реализация на эрланге была

и там предложили переписать на bif

потом пару раз оптимизировали, но косметически

напиши на Nim и посмотри какую он сишную версию выдаст
на выхах попробую, но самое забавное что пока всех php победил =)

Александр
15.03.2017
07:27:26
да

7.1

abc
15.03.2017
07:27:39
а 5 я думаю обосрался бы

Admin
ERROR: S client not available

abc
15.03.2017
07:27:51
интересно сравнение варианта на Java :)

Александр
15.03.2017
07:27:53
согласен

джаву не умею готовить

abc
15.03.2017
07:28:03
с прогретой JVM

Marat
15.03.2017
07:29:40
напиши на Nim и посмотри какую он сишную версию выдаст
Ним скомпилированный в си плохо читается

abc
15.03.2017
07:30:36
ну хотя бы общую концепцию углядеть, при условии что она быстрее конечно )

anton
15.03.2017
07:49:22
чего там надо написать и на каких данных запустить? а то вы тут 300+ выдали, не все прочитал :)

shadowjack
15.03.2017
07:50:47
Я просто попытался в iex этот файлик считать в бинарь и у меня машина в своп ушла

Rumata
15.03.2017
07:51:29
https://www.youtube.com/watch?v=XPlXNUXmcgE&feature=youtu.be&list=PLWbHc_FXPo2gaE8KWPbj0FMoT9DZL4Yuq

вообще по красоте

Google
anton
15.03.2017
07:51:39
а, бинарь:сплит ...

Rumata
15.03.2017
07:51:42
объясняет супер изи

Александр
15.03.2017
07:51:59
https://yadi.sk/d/jw7K_JE93FrCGZ запускаешь erl {_, Cont} = file:read_file("/tmp/1.txt"). Res = binary:split(Cont, <<"\n">>, [global]).

и у тебя сожрёт всю память

и проц прогреет от души

re:split(Cont, <<"\n">>). а вот такой вполниться в разы быстрее (но тоже прилично памяти сожрёт)

abc
15.03.2017
07:56:14
хм. дак вроде писали же ранее, что если читать файл эрлангом то он в памяти раскрывается в 3 раза больше размер

Александр
15.03.2017
07:56:46
файл 79 мегабайт, а жрёт 16 гигабайт

abc
15.03.2017
07:56:57
издержки )

Александр
15.03.2017
07:57:03
=)

причём разбирается на сях, а не на эрланге

нафиг такие издержки

abc
15.03.2017
07:57:48
попробуй в эликсир через пайп

shadowjack
15.03.2017
08:00:35
Через стримы?

abc
15.03.2017
08:01:25
в видео выше жосе вроде про ээто и рассказывает

Александр
15.03.2017
08:03:38
на линуксе сжирает всё =)

anton
15.03.2017
08:03:47


выше 500 еще не прыгало.. все по дефолту. R18

shadowjack
15.03.2017
08:04:30
А какой эрланг?

Страница 417 из 1045