Анна
просто у меня сегодня мозги наизнанку, вот я и не понимаю, что со студией делать 🤷♀️
Vasily
Анна
Romɑn
Nikolay
А typeof(T) и Nullable.GetUnderlyingType сильно медленные?
Hog
https://twitter.com/thoriumi/status/1055954402639597569?s=12
x
Лолище
Nikolay
Nikolay
Там 3 функции их используют, и каждая по 4% времени отжирает
Nikolay
public TUnder Convert<TUnder, T>() where T : TUnder
{
return default(T);
}
Convert<int?, int>();
Можно как-то такое провернуть?
Ayrat
Nikolay
Ayrat
Nikolay
Может констрейнт по другому задать как-то?
Ayrat
Да, но он конвертируется в int?
Кстати Nullable особый случай в рантайме
https://github.com/dotnet/corefx/blob/bfe02c0d569184df15239a920a7da1e8a81fc9e8/src/Common/src/CoreLib/System/Nullable.cs#L10
Ayrat
он же явно CLR поддерживается, поэтому там нормальные костыли неочевидные
Ayrat
имплисит каста в Int32.cs в налабл нет. Потому что магию делает рантайм
Vladislav
боже
Vladislav
жопа в огне от этих провайдеров
Vladislav
пиздец
Vladislav
Ayrat
жопа в огне от этих провайдеров
Я лично тоже не в восторге от этой фичи, потому что она, по-моему мнению, очень сложна для разработки и поэтому почти все тайп провайдеры пригодны только для показа на одном слайде для создания вау эффекта
Ayrat
все дико недоработаны, неоптимизированы, небогаты функционалом
Vladislav
Да я вот свой пытаюсь написать
Vladislav
До сих пор не разобрался как дебажить
Vladislav
В коде явно что-то не так, но чую проще код копипастнуть и без логики тп его дебажить как обычный
Hog
Vladislav
В итоге просидел 4 часа и получил как результат больную голову
Vladislav
Я не совсем понял когда там нужна ProvidedAssembly
Vladislav
Для генеративных провайдеров
Hog
дегенеративных
Vladislav
Romɑn
https://twitter.com/Shiroginne/status/1056597510712709121
Vladislav
Паравозик который смог
Vladislav
Vladislav
блин гифка обрезалась чет
Romɑn
Очень сжато
Vladislav
щас
Vladislav
Vladislav
Короче провайдер наговнокодил
Ayrat
Короче провайдер наговнокодил
Красавчик! Но именно JsonProvider уже есть если что
https://fsharp.github.io/FSharp.Data/library/JsonProvider.html
Vladislav
Ayrat
Он erased)
А твой будет типы полученные в сборку складывать?
Vladislav
Vladislav
вообще сейчас написан как generative
Nikolay
Nikolay
return typeof(T).IsEnum;
Откуда здесь IsSubclassOf? 🤔
Hog
Ваще референс сорс оч полезная штука - на предмет посмотреть, а как оно там всё внутри
Ayrat
Nikolay
Ок, спасибо
Nikolay
А почему здесь не всё показано? Явно 28% там не будет в сумме
Hog
Nikolay
И как посмотреть что ещё тормозит?
Hog
остальное - это код профилируемого метода
Hog
Hog
поиск по референс сорсу занял 5 секунд
Ayrat
подскажи - как там нужное найти?
Ну, например, надо тебе посмотреть как там таски реализованы
топаешь сюда
https://github.com/dotnet/corefx/tree/master/src
и в нужный неймспейс, там смотришь сорцы
Ayrat
это ж гитхаб
Hog
ну, вот, к примеру System.Type
Ayrat
ещё раз, на сорсреференсе - старый фреймворк
Ayrat
т.е. его особо нет смысла смотреть, могли уже всё переделать
Hog
классик :) не старый :) 4.7.2
Ayrat
Всё что не неткор - старый)
Hog
поиск по System.Type даёт 6К результатов
Hog
причём на первой странице самого сорца System.Type нет
Ayrat
Я думаю он где-нибудь в System.Runtime )))
Hog
может какие хитрости для поиска есть? :)
Ayrat
Romɑn
Ayrat
https://github.com/dotnet/corefx/blob/master/src/Common/src/CoreLib/System/Type.cs
Hog
Common - CoreLib
Hog
понятно
Hog
там, кстати ровно то же самое
Hog
https://github.com/dotnet/corefx/blob/master/src/Common/src/CoreLib/System/Type.cs#L107
Ayrat