Size: a a a

Programming Offtop

2020 October 28

VP

Vladimir Petrakovich in Programming Offtop
Anton Korotkikh
пока стоит задача 1. валидировать произвольный avro и трансплировать его в json. есть два решения, одно аккуратное, другое быстрее но из категории 'мои вкусы специфичны'
Но чтобы валидировать и перегонять в JSON тебе не понадобится генерировать DTO-шки - их использовать всё равно некому
источник

VP

Vladimir Petrakovich in Programming Offtop
Alexander Nozik
Я бы все-таки взял вариант аля kotlinx-serialization с компайл-таймовой генерацией если это возможно.
Если с точки зрения кода сервиса схема произвольна (она прилетает снаружи в рантайме) кодогенерация при сборке отлетает
источник

AN

Alexander Nozik in Programming Offtop
Vladimir Petrakovich
Если с точки зрения кода сервиса схема произвольна (она прилетает снаружи в рантайме) кодогенерация при сборке отлетает
Если она произвольна, проще динамический валидатор сделать. Он будет точно не медленнее.
источник

VP

Vladimir Petrakovich in Programming Offtop
Alexander Nozik
Если она произвольна, проще динамический валидатор сделать. Он будет точно не медленнее.
Ну если одна и та же схема гоняется много раз, может быть смысл под неё код нагенерить. Не думаю, что это не быстрее, чем каждый раз бегать по динамической структуре.
источник

AN

Alexander Nozik in Programming Offtop
Vladimir Petrakovich
Ну если одна и та же схема гоняется много раз, может быть смысл под неё код нагенерить. Не думаю, что это не быстрее, чем каждый раз бегать по динамической структуре.
Примерно одинаково. JVM очень хорошо опитимизирует эти бегалки
источник

VP

Vladimir Petrakovich in Programming Offtop
Alexander Nozik
Примерно одинаково. JVM очень хорошо опитимизирует эти бегалки
Ну я подозреваю, что написать такую хорошую бегалку будет не сильно проще
источник

VP

Vladimir Petrakovich in Programming Offtop
Хотя лучше не связываться с такими вещами до последнего
источник

AN

Alexander Nozik in Programming Offtop
Vladimir Petrakovich
Ну я подозреваю, что написать такую хорошую бегалку будет не сильно проще
Не знаю, мерять надо. Вообще обход детерменированного дерева - это шустрая вещь. Парсинг текста все равно дороже будет
источник

AK

Anton Korotkikh in Programming Offtop
Alexander Nozik
Если она произвольна, проще динамический валидатор сделать. Он будет точно не медленнее.
ну примерно так и работает. самый быстрый вариант из дешёвых в реализации. это ловить сырой буфер, узнавать для него схему, кешировать их и по ipc передавать схему и буфер в ноду. нода примерно в 5 раз быстрее переваривает и валидирует сырой авро буфер в джейсон строку, чем жаба генерик рекорд в него же.
источник

AN

Alexander Nozik in Programming Offtop
Vladimir Petrakovich
Хотя лучше не связываться с такими вещами до последнего
Именно
источник

BP

Bogdan Panchenko in Programming Offtop
Alexander Nozik
Не стоит так делать в принципе. Все попытки, что я знаю, для сериализации произвольных данных без заранее оговоренных схем, превратились в неподдерживаемы хлам
Ну они будут регулироваться мной (моим сервером). Но я так подумал сделаю по инженерски: типов состояния не так много, можно сделать столбцами таблицы, но прийдеться делать nullable так как. в каждом типе ноды  свои параметры
источник

AN

Alexander Nozik in Programming Offtop
Anton Korotkikh
ну примерно так и работает. самый быстрый вариант из дешёвых в реализации. это ловить сырой буфер, узнавать для него схему, кешировать их и по ipc передавать схему и буфер в ноду. нода примерно в 5 раз быстрее переваривает и валидирует сырой авро буфер в джейсон строку, чем жаба генерик рекорд в него же.
Ну это вопрос к тому, что там в жаве делается. Может надо просто переписать
источник

AK

Anton Korotkikh in Programming Offtop
Alexander Nozik
Ну это вопрос к тому, что там в жаве делается. Может надо просто переписать
может, делал по докам кафки и авро
источник

AN

Alexander Nozik in Programming Offtop
Anton Korotkikh
ну примерно так и работает. самый быстрый вариант из дешёвых в реализации. это ловить сырой буфер, узнавать для него схему, кешировать их и по ipc передавать схему и буфер в ноду. нода примерно в 5 раз быстрее переваривает и валидирует сырой авро буфер в джейсон строку, чем жаба генерик рекорд в него же.
Если нода работает быстрее жавы, значит где-то косяк в коде.
источник

с#

саша сок #KotlinGang... in Programming Offtop
Alexander Nozik
Если нода работает быстрее жавы, значит где-то косяк в коде.
какой-то большой косяк лул
источник

Kd

Konstantin dmz9 in Programming Offtop
развлекуха как написать валидатор на схему данных максимально упоротым путём
источник

AN

Alexander Nozik in Programming Offtop
саша сок #KotlinGang
какой-то большой косяк лул
Да нет, если там парсер, то достаточно буферы не ресайклить.
источник

AN

Alexander Nozik in Programming Offtop
Короче. Мой основанный на опыте тезис. JVM такие штуки очень лихо оптимизирует. Не надо в нее лезть. Надо открыть профайлер и посмотреть, что тормозит. Скорее всего дело в парсере и его надо заменить.
источник

AK

Anton Korotkikh in Programming Offtop
Alexander Nozik
Если нода работает быстрее жавы, значит где-то косяк в коде.
чому же? когда дела касается динамики у жабовой рефлексии мало шансов против того динамика родная стихия, это раз. два жабоский JIT офигенно тормозной. например, на первым итерациях одного и тоже бинарного сообщения жвм может отработать за 140-90 мс, а нода 8
источник

AN

Alexander Nozik in Programming Offtop
Anton Korotkikh
чому же? когда дела касается динамики у жабовой рефлексии мало шансов против того динамика родная стихия, это раз. два жабоский JIT офигенно тормозной. например, на первым итерациях одного и тоже бинарного сообщения жвм может отработать за 140-90 мс, а нода 8
Там нет никакой рефлексии. Там обход динамического дерева.
источник