@Fsharp_chat

Страница 713 из 772
Ivan
14.09.2018
20:28:13
Похалявить хотел.

Arseniy
14.09.2018
20:28:33
ну тогда надо просто устраивать аля знатоки. вопрос поставлен, дальше все накидывают вариантов, а потом смотрим, кто оказался прав.

в целом фишарповый тип фунции из-за каррирования мне всегда представляся чем-то менее эффективным, чем обычный делегат. но тем не менее, есть же hopac, который якобы выносил по производительности таски из додиеза

Ivan
14.09.2018
20:30:39
Мне слегка обидно, что для с шсарпа это разьжевываетя, а для нас нет

Google
Arseniy
14.09.2018
20:31:03
что именно, я без контекста

Ivan
14.09.2018
20:33:03
Ну автоматы Что в yield, что в async. Но ведь работать они должны одинаково (ну почти).

Arseniy
14.09.2018
20:34:58
Ну это совсем спорно. Особенно если FSharpFunc сделать struct
а я не утрвеждаю, что я прав. это чисто поверхностное суждение

Ivan
14.09.2018
20:35:59
А я и не спорю. Айрат ты читал ядро гопака?

Ivan
14.09.2018
20:37:50
Ну там же дичайшая оптимизация чуть ли не на унменеджет (их нет). Вообще это самое то, чтоб понять, насколько неэффективно написан рантайм.

Arseniy
14.09.2018
20:38:23
Ну это совсем спорно. Особенно если FSharpFunc сделать struct
со структ вообще не ясно. что ты имеешь в виду. вот ты передаешь ф-цию в ф-цию. есть у тебя допустим cps, чтобы все работало иметь указатель на какую-то другую "фуннкцию" тебе все равно потребуется, чтобы было, что копировать

Ivan
14.09.2018
20:38:58
Хопак как раз делал гений. Учусь у него.(пытаюсь, пока не осилил)

Ayrat
14.09.2018
20:40:13
да, он (автор гопака) умудрился достаточно простым кодом сделать какие-то дико сложные и крайне эффективные абстракции.

Код ядра можно в рамку обводить и на стену вешать

Roman
14.09.2018
20:42:39
@nevoroman Пайтон провайдер не сложился?
Не сложился, я переехал и обрёл миллион других дел :(

Google
Ivan
14.09.2018
20:42:42
со структ вообще не ясно. что ты имеешь в виду. вот ты передаешь ф-цию в ф-цию. есть у тебя допустим cps, чтобы все работало иметь указатель на какую-то другую "фуннкцию" тебе все равно потребуется, чтобы было, что копировать
Указатель на функцию - 8 байт, остальное мета. Потому мне кажется, что Это можно вообще к регистровым переменным свести. Ну плюс ссылка на данные, еще 8

Roman
14.09.2018
20:43:17
Жива надежда, что я сделаю его к докладу на весенний DotNext, но вообще пока ничего а эту сторону не делаю

Roman
14.09.2018
20:43:24
Roman
14.09.2018
20:44:13
О, круто. Внутри РФ переезд?
Не, я уже четыре месяца как в Берлин уехал

Arseniy
14.09.2018
20:44:16
да, он (автор гопака) умудрился достаточно простым кодом сделать какие-то дико сложные и крайне эффективные абстракции.
это вопрос точки зрения. возможно, ты видел статью, где какой-то индус оптимизировал мемари трафик на разборе цсв файла в 100500 тыш раз? там чувак опустился до того, что руками переписал примитивы из стандартной библиотеки. и там тоже многим казалось, что просто и лаконично, просто он скипнул теже самые over 9000 сложностей и нюансов, которые реализует стдлиба

Arseniy
14.09.2018
20:46:05
Указатель на функцию - 8 байт, остальное мета. Потому мне кажется, что Это можно вообще к регистровым переменным свести. Ну плюс ссылка на данные, еще 8
ну вот у тебя замыкание, плюс каррированное. тебе надо иметь указатель, а там по адресу кроме замкнутых переменных должен еще один колбак лежать, на ф-цию после каррирования. не? при вызове "применненой" ф-ции надо скопировать в нее замкнутые переменные. или как это делается?

Ayrat
14.09.2018
20:46:15
и возможностей поболе чем у нугета AsyncSeq

и ещё много чего поболе :D

Arseniy
14.09.2018
20:47:43
На самом деле его либа поболе кода имеет чем async.fs
да хрен с ним с асинк.фс. он же таски с эвэйтами из сишарпа победил. а они пользуются поддержкой компилятора и в настоящие конечные автоматы раскрываются, как енумераторы

Arseniy
14.09.2018
20:48:20
то что я смотрел, его примеры были быстрее на гопаке, чем таски сишурпа

Ayrat
14.09.2018
20:49:18
таски очень хороши в большинстве случаев. Особенно на малом кол-ве задач. И гопак тут может даже посасывать. Но как только задач становится от нескольких сотен, то таски уезжают в трубу и по скорости, и по памяти

эти автоматы начинают такой мемори трафик генерить, обожемой просто

Дефолтный ТаскШедулер плоховато справляется с большим кол-вом задач. Хотя его там костылями со всех сторон обложили. Очень сложный конструкт

Ivan
14.09.2018
20:51:46
там стейт машина. Причем почти не ыидимая. Там математика многих лет Concurrent ML. Который и сделал го чуть не самым быстрым языком для конкуренног программирования. Хотя ТАМ (в го) только минимум

Arseniy
14.09.2018
20:52:06
ну сложный, да. но какгбы это же не объясняет природу вещей. почему таски генерируют трафик, а калбеки и комбинаторы калбеков гопака — нет

Ivan
14.09.2018
20:52:41
Потому что они синхронные!

Arseniy
14.09.2018
20:53:21
что за новости

Ivan
14.09.2018
20:58:46
Посмотри о чем речь в манифесте.

Google
Arseniy
14.09.2018
20:59:45
Ayrat
14.09.2018
21:00:15
ну сложный, да. но какгбы это же не объясняет природу вещей. почему таски генерируют трафик, а калбеки и комбинаторы калбеков гопака — нет
ну на каждый асинхронный вызов в C# будь добр получи стейтмашину (на куче) помимо таска. А в гопаке континуейшны через линкед лист реализованы. Т.е. каждая работа просто препендится с сохранением старого стака. Лишние объекты просто не создаются. Стейт в самих джобах проверяется

Я не могу сказать что я до конца понимаю что там в ядре происходит

Ivan
14.09.2018
21:01:01
https://github.com/Hopac/Hopac/blob/master/Docs/Programming.md

Ayrat
14.09.2018
21:01:21
там лучше есть https://github.com/Hopac/Hopac/blob/master/Docs/Internals.md

Arseniy
14.09.2018
21:04:02
я енто всё читал, правда давно.

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

Ayrat
14.09.2018
21:04:57
Это норма!

Arseniy
14.09.2018
21:05:09
как и проект nfx, который тоже якобы сияет невероятными штуками

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

Roman
14.09.2018
21:06:34
Так надо попробовать)

Arseniy
14.09.2018
21:08:09
ну nfx я скорее читал, там есть много хороших вещей, хоть этого чувака и обсмеяли на хабре.

гопак слишком низкоуровневая штука, чтобы была бы мне интересна

напомните, как называлась библиотека вроде от сосздателей mbrace

которыя цепочки вычислений над коллекциями сворачивала?

Ivan
14.09.2018
21:14:12
Начал переводить, но смычл потерял ? https://github.com/ijsgaus/translations/blob/hopac/Hopac/Programming.md

Arseniy
14.09.2018
21:15:52
Ivan
14.09.2018
21:16:06
Бывало

Для себя не в продакшене

Google
Arseniy
14.09.2018
21:16:43
просто имхо интересней было именно практику написать

Ayrat
14.09.2018
21:16:48
ты крут конечно. но ты сам его использовал?
Я почти везде в проде гопаком танцую.

Ayrat
14.09.2018
21:17:16
И ещё свои стримы, пулы и прочая дивность

Arseniy
14.09.2018
21:17:40
Ivan
14.09.2018
21:17:56
Я тебе Айрат уже устал завидовать ?

Arseniy
14.09.2018
21:18:09
ты зря

Ayrat
14.09.2018
21:18:50
а каков характер задач?
Etl (и тут стримы выручают просто ппц) и шедулеры(нагрузить кучей задач сервер)

Arseniy
14.09.2018
21:19:48
да, норм, согласен. сам джва года писал etl. тут как раз в рамках машины интересно параллелиться.

и все равно etl не упирается в шедулер с тасками

Ayrat
14.09.2018
21:20:58
У меня етл в облаке на ажурных функциях. Поэтому он должен быть быстрый и не жрать память. Любая либа для работы со стримами справилась бы, но в гопаке она лучше чем асинксек от Сайма. Такие дела

Ivan
14.09.2018
21:23:09
И не расказвыай. Всеж быть первым не значит самым быстрым.

Roman
14.09.2018
21:24:13
Поздравляю)
Спасибо :)

Ivan
14.09.2018
21:24:29
Сайм. В дотнете

Arseniy
14.09.2018
21:27:02
У меня етл в облаке на ажурных функциях. Поэтому он должен быть быстрый и не жрать память. Любая либа для работы со стримами справилась бы, но в гопаке она лучше чем асинксек от Сайма. Такие дела
ну у меня etl совсем в другое упирался. в стримы, которые потоки байтов, в оперативу, во время обработки. для одних дебилов пришлось dawg реализовывать, потому что иначе нельзя было вычислить дельту в разумных ресурсах(

Ayrat есть оценки сколько гопак принес пользы против созданных проблем?

Ayrat
14.09.2018
21:29:43
И не расказвыай. Всеж быть первым не значит самым быстрым.
Эт да. Асинки фшарпа страдают той же проблемой что и таски. Завязка на тредпул. Я пару раз огребал тред старвейшн когда выгребал в 1000 потоков какое-то апи. Нормас там мегабит 500 тянуло.

Ivan
14.09.2018
21:31:23
Ну а я о чем?

Ayrat
14.09.2018
21:32:47
Ayrat есть оценки сколько гопак принес пользы против созданных проблем?
Пользы много. Большой набор примитивов позволяет легко построить хоть звездолет и причем очень быстро. Стримы имеют богатый функционал, позволяют не нагружать память при обработке больших датасетов. Интероп хоть с тасками, хоть с асинками. Минусы - это гопак, никто его не знает. Но мне насрать

Google
Ivan
14.09.2018
21:34:00
Кстати, Айрат, с тебя что нибудь о стримах в гопаке. А то нет ничего.

Ayrat
14.09.2018
21:34:04
У меня на работе один хер, что гопак, что асинки) на фшарпе никто не пишет кроме меня)

Кстати, Айрат, с тебя что нибудь о стримах в гопаке. А то нет ничего.
Эт да, только надо уточнить что аудитория данного доклада будет крайне мала!

Ayrat
14.09.2018
21:34:59
У меня свои стримы, на основе гопаковских, но не персистентные

Roman
14.09.2018
21:35:02
Со скринкастами

Ivan
14.09.2018
21:35:16
Ну ведь ты с ними работать умеешь. Хотя бы репу с примерами.

Arseniy
14.09.2018
21:35:29
>выгребал в 1000 потоков какое-то апи. Нормас там мегабит 500 тянуло.

что ты там тянул, в каком формате, чтобы на фоне такой нагрузки можно было заметить накладные на тасочки?

Ivan
14.09.2018
21:36:53
Сделаешь, я перевод закончу (шантаж).

Arseniy
14.09.2018
21:37:24
ну то есть вопрос производительности снимается?

Ayrat
14.09.2018
21:37:26
Стримы взял, вжух вжух, готово

ну то есть вопрос производительности снимается?
У меня ио, мне перформанс числомолотилок неважен)

А вот память тыща тасок съест бодро

Arseniy
14.09.2018
21:39:23
а спорим 1000 httprequestmessage съест их на 3 порядка быстрее?

а ответы могут съесть быстрее на 4 порядка, если тебе там реально данные приходят?

а процессинг на все это еще накатит х2 минимум

Ayrat
14.09.2018
21:40:16
Давай сократим и сразу к делу. Твой поинт?

Arseniy
14.09.2018
21:41:04
мой пойнт, что на твоих нагрузках ты бы не видел разницы ни в памяти ни в производительности от инфраструктуры языка, какую бы ты не выбрал

Ivan
14.09.2018
21:41:10
Спорим, я на ассемблере быстрее что то несложное напишу? А кот поддерживать будет по фигу..

Страница 713 из 772