Ayrat
Короче, прикольно, но когда я юзал было дико неудобно. Уверен сейчас примерно так же. Но работало, прикольно
Ayrat
Я там даже серьезный стейт прокидывал
Ayrat
Типа етл делал
Roman
Понял, спасибос
Vasiliy
https://www.reddit.com/r/csharp/comments/glvi7y/zero_allocation_json_deserialization_tool/
Vasiliy
уже было тут?
Vladislav
Неа
Vasily
Делишиоус
Doge
readonly ref partial struct Product мммм
А можно было взять нативный язык и не париться
Vasily
А вот ежели ему на стек мегабайт так 20 залить
Vasily
Шо будет
Doge
Но когда начал дрочить перформанс, то остановиться сложно.
Doge
А вот ежели ему на стек мегабайт так 20 залить
Это очень ощутимо надо залить с учётом того, что массивы и строки всё равно в хипе будут.
Vladislav
Но кодген все равно лучше reflection emit
Roman
А можно было взять нативный язык и не париться
Мне вообще кажется, что 90% активно жаждущих зеро аллок затащат его в проект с еф каким-нибудь
Doge
Но на управляемых языках такое задротство это всегда либо полумеры, либо очень больно, если прям по настоящему этим заниматься.
Roman
с запросами на десять инклюдов
Количество инклюдов давно перестали контролировать, с тех самых пор, когда в моду вошёл auto mapper ef extensions
Vladislav
Я не видел
Roman
Ооо
Vladislav
Бля
Doge
Вот если такое нужно, то лучше реально взять нативный язык, без гц, с человеческой оптимизацией и иметь возможность следить за перформансом везде без особых проблем.
Vladislav
Одно время был охуенный Маппер правда под гпл, который ебет автомапперы по перфомансу
Vladislav
Обмазанный кодгеном
Roman
Это как?
Это когда у тебя джойны зависят от того, какой маппинг из дата слоя в домен
Vladislav
Я даже портировать на неткор пытался
Vladislav
https://github.com/Liminiens/EmitMapper
Roman
И похуй что шняга в процессе либо сгорит либо отвалится
Doge
Но выучить новый язык сЛоЖнА, куда проще хорошенько дрочнуть на сишарпе
Ну с таким надо пробовать примером бороться. У нас вон, вдохновившесь моим примером, пошли инфраструктурные сервисы, которые на дотнете имели проблемы по нагрузке, переписывать на раст. Первые результаты вроде неплохие.
Roman
Раньше у меня не было возможности показать пример, пушто нахуй слали сразу
Roman
Я и уходил, собственно
Denis
и как ?
Denis
неплохие это как ?
Denis
для этого планктон должен быть выше среднего
Ну если набирать средний планктон то скорее всего не будет пишуших на фш, например
Doge
неплохие это как ?
На инфраструктурном сервисе потребление памяти раз в шесть снизили на нагрузке, RPS подняли, но его сложнее считать корректно, по нему точных данных пока нет. У меня на CPU-bound сервисе результаты ещё лучше: буквально на порядки, но я задрочу по хардкору.
Roman
Ну с таким надо пробовать примером бороться. У нас вон, вдохновившесь моим примером, пошли инфраструктурные сервисы, которые на дотнете имели проблемы по нагрузке, переписывать на раст. Первые результаты вроде неплохие.
На текущем месте все гораздо лучше в этом смысле: существующее решение на сишарпе переписали на фшарп (не фана ради, а ушли от определенных технологий), и все остались довольны. И бизнес, и разработчики.
Roman
Proffsmagasinet
Roman
они же известны как staypro в финке и норвегии
Vladislav
Proffsmagasinet
На линкедине нашёл?
Roman
На линкедине нашёл?
нет, @neftedollar свел меня с ними, за что ему большое спасибо)
Denis
Лично меня в расте привлекают цифры " Memory corruption issues are the root-cause of 68% of listed CVEs." https://googleprojectzero.blogspot.com/p/0day.html
Roman
Да
Roman
собсно, продают инструменты через интернет
Doge
Задрочу по хардкору это как ?
Вкратце история: Я в компании занимаюсь решением VRP задач, это всегда CPU-bound задача, все дела. Был легаси сервис, написанный на джаве до меня, которые использовал для решения задач достаточно своеобразную джава либу. У неё есть ряд проблем с архитектурой и производительностью, хотелось получить более производительный и более расширяемый вариант. Пошел прототипировать новую архитектуру и в какой-то момент пришло осознанение, что новую условно-ФП-стайл архитектуру можно элементарно перенести на любой язык, где есть тайпклассы. И я решил попробовать раст как вариант, т.к. под необходимые условия он подходил. Результат превзошел все ожидания. Тупо написанный прототип сразу же обогнал джаву раз в 15 по перформансу и на два порядка (!!!) по памяти. Само собой, тут надо упомянуть, что это в большей степени проблема архитектурных решений в предыдущем решении, но получить достаточно расширяемую и одновременно производительную архитектуру на управляемых языках всё равно было бы сложно тупо из-за того, что бесплатных абстракций тут нет, а они важны. А потом я пошел я решил, а можно ли пойти дальше и выиграть ещё.
Shub
Вкратце история: Я в компании занимаюсь решением VRP задач, это всегда CPU-bound задача, все дела. Был легаси сервис, написанный на джаве до меня, которые использовал для решения задач достаточно своеобразную джава либу. У неё есть ряд проблем с архитектурой и производительностью, хотелось получить более производительный и более расширяемый вариант. Пошел прототипировать новую архитектуру и в какой-то момент пришло осознанение, что новую условно-ФП-стайл архитектуру можно элементарно перенести на любой язык, где есть тайпклассы. И я решил попробовать раст как вариант, т.к. под необходимые условия он подходил. Результат превзошел все ожидания. Тупо написанный прототип сразу же обогнал джаву раз в 15 по перформансу и на два порядка (!!!) по памяти. Само собой, тут надо упомянуть, что это в большей степени проблема архитектурных решений в предыдущем решении, но получить достаточно расширяемую и одновременно производительную архитектуру на управляемых языках всё равно было бы сложно тупо из-за того, что бесплатных абстракций тут нет, а они важны. А потом я пошел я решил, а можно ли пойти дальше и выиграть ещё.
ты так написал, типа это архитектура дает прирост в 15 раз
Denis
крутая история да
Doge
ты так написал, типа это архитектура дает прирост в 15 раз
Не совсем, её не выразить бесплатно на управляемых языках
Denis
ну тут я думаю архитектура * раст мемори менеджмент
Shub
Не совсем, её не выразить бесплатно на управляемых языках
я думаю, ты мог бы перенести код на раст 1 в 1 - и все равно получить прирост порядка 10 раз
Doge
ну тут я думаю архитектура * раст мемори менеджмент
Нет, тут больше наличиеприличного оптимизирующего компилятора, это очень важную роль в таких задачах играет
Doge
я думаю, ты мог бы перенести код на раст 1 в 1 - и все равно получить прирост порядка 10 раз
Не, я проверял такой вариант, оно достаточно рядом с джавой идёт.
Doge
Там в пару раз выигрыш
Denis
Компилятор подразумевается
Denis
Как говорилось раньше, очень мало где норм компилятор
Denis
мне как то отказали в использовании TS именно из-за него, я не разбирался в чем там конкретно дело но это играет роль )
Doge
крутая история да
Хардкор пошел дальше, когда я пошел смотреть, можно ли ещё выиграть: * Взял в зубы vtune и пошел анализировать, что происходит по метрикам * Смотрел выхлоп компилятора в асме * Смотрел профили различных видов В итоге удалось ещё раз в 5-6 дополнительно выиграть за достаточно недолгий срок. Но тут пришлось чуть ансейф заюзать и ещё пару трюков применить.
Doge
А такие выигрышы мне важны, потому что это значит, что можно сильно выграть в качестве решений и в допустимом размере задач тупо засчёт грубой вычислительной мощи
Doge
И на задачах, где раньше Java вариант умирал буквально, у меня теперь стабильно работающий (и жрущий копейки памяти) сервис.
Doge
Вот после этого народ вдохновился и пошел пробовать плохо работающую инфраструктуру переводить на раст.
Ayrat
годный саксес стори
Doge
годный саксес стори
Если честно, я сам был удивлен насколько хорошо раст себя показал. Я вначале долго не верил, что мой написанный за неделю прототип реально показывает настолько хороший результат. Закидал всё ассёртами, дополнительными проверками решения и т.д. в попытках понять, всё ли правильно делает.
Vladislav
https://github.com/dotnet/fsharp/pull/9193
Vladislav
Эх
Doge
ты так написал, типа это архитектура дает прирост в 15 раз
Ну а архитектура, конечно, имеет значение. Но её реализовать с таким выигрышем можно только на нескольких относительно мейнтрим языках, потому что все остальные не умеют полноценно инлайнить тайпклассы и полноценно оптимизировать большие методы, а мне это дико важно.
Doge
Теперь всё хочу поиграться на каком-нибудь языке с полноценными whole program optimizations, типа того же MLTon'а и посмотрел можно ли будет там получить похожие результаты, используя модули или рекордов функций. Но как-то времени пока нет.
Vasiliy
О_О https://www.reddit.com/r/fsharp/comments/gma9sk/using_f_with_unity_part_6_conclusions_and_farewell/
Vasiliy
лол