Size: a a a

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

2019 May 28

AB

Alexey Bolshakov in Эликсир и Вунш
а. ну и да. при обработке JSON можно еще на мемори аллокации упасть. поэтому читать реально было только в stream/flow режиме. иначе мог произойти пик потребления памяти и всё падало. подключиться к докеру решения на сервере и поглядеть observer'ом чего там происходит, естественно нельзя. поэтому сама отладка того, что происходит на сервере, но не происходит у тебя - весьма неиллюзорна
источник

AB

Alexey Bolshakov in Эликсир и Вунш
да и скорость работы решения на сервере иногда оказывалась ниже, чем у себя дома. причем я несколько дней искал причину, почему теряется производительность на скорость ответа. а потом оказалось, что у меня на хостовой машине и в докере немного отличаются версии Erlang и ерланг, что в докере не пересобирал beam'ы, а брал мои, но из за разницы в версиях, видимо, происходили какие-то накладки. ничего не падало, но работало очень медленно (лучше бы упало). порешалось, когда совместными усилиями догадались очищать _build перед сборкой докер образа решения перед загрузкой )))
источник

AB

Alexey Bolshakov in Эликсир и Вунш
в реальности же скорость работы решения отличалась. Сишники определили. Выводили в консоль информацию о сервере и выяснилось, что серверов два. Один побыстрее, второй помедленнее )))
источник

AB

Alexey Bolshakov in Эликсир и Вунш
и это еще далеко не всё...
в общем, конкурсы интересные. рекомендую
источник

ML

Maksim Lapshin in Эликсир и Вунш
Alexey Bolshakov
в боевом режиме - это 100 JSON файлов, каждый по 16 мегабайт. на старт даётся отведённое время. и за 10 минут, грубо говоря, ни один из имеющихся JSON парсер эликсира, в указанный период все эти данные не сожрёт
Структура известна?
источник

AB

Alexey Bolshakov in Эликсир и Вунш
Maksim Lapshin
Структура известна?
конечно
источник

ML

Maksim Lapshin in Эликсир и Вунш
Alexey Bolshakov
конечно
Тогда возможно имеет смысл из жсона в бинарь переливать
источник

AB

Alexey Bolshakov in Эликсир и Вунш
я так и сделал
источник

AB

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

ML

Maksim Lapshin in Эликсир и Вунш
я с подобной проблемой столкнулся при чтении mp4.

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

ML

Maksim Lapshin in Эликсир и Вунш
но
источник

ML

Maksim Lapshin in Эликсир и Вунш
весь этот хайлоад перфоманс вызывает легкое уныние
источник

ML

Maksim Lapshin in Эликсир и Вунш
к реальной практике отношения мало
источник

AB

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

AB

Alexey Bolshakov in Эликсир и Вунш
в принципе одна машина - это не хайлоад
источник

AB

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

AB

Alexey Bolshakov in Эликсир и Вунш
структуры ерланга определенно жирнее из за, как бы, дескрипторов.
источник

AB

Alexey Bolshakov in Эликсир и Вунш
я даже придумал вариант, чтобы строки хранить в больших числах. и на этом сэкономил практически  в два раза больше памяти )
источник

AB

Alexey Bolshakov in Эликсир и Вунш
ключевой же момент для дискриминации не натив решений - это расчет общего времени штрафа путем суммирования времени ответа на все запросы. из этого победить смогут только нативные байтоукладчики. даже гошники страдали там вокруг GC потому что он им начинал временами мешать
источник

AB

Alexey Bolshakov in Эликсир и Вунш
еще с прошлого года предлагалось считать штраф, как это происходит в реале - при превышении SLA времени на ответ.
источник