В F#, Unsafe.As даёт возможность небезопасно кастить любую область памяти во что угодно и работать с ней как с любым типом. C# такие выкрутасы делать не даёт.
Я бы настойчиво не рекомендовал такое делать для чего угодно кроме как струтур/примитивов без полей reference типа (и то, даже в структурах можно наступить на грабли unaligned read). Это вам кажется что вы ловко что-то скастили, а по факту могли создать GC Hole который взорвет ваш код отложенной раз в 100 запусков, поэтому Unsafe не зря называется Unsafe, и если F# (по вашим словам) позволяет это делать более свободно то это не звучит как реклама
в теории он должен быть супер дешевым на большинстве платформе где есть спец регистры указывающие на текущий поток, просто пока это не сделано в дотнете - я файлил ишью https://github.com/dotnet/runtime/issues/63619
По поводу Equals(object,object) - у нас уже есть фикс для этого в dotnet/runtime, но пока это еще не вмерженно. Там необходим escape analysis чтобы понять что бокшенный value type никуда не убегает и можно не боксить, либо эмулировать боксинг но на стеке.
Без телеметрии невозможно сделать нормально ни одно приложение в принципе (UX). Давно пора перестать истерить по этому поводу, но если сам факт использования тех же гугл или фб аналитик пугает — наверняка есть коробочные решения для своего сервера.
Кстати, а вы знали что на любое существительное уже существует жс фраемворк с таким же названием? :-)
А вообще мне это напоминает как C# Compiler с именем csc — так же пришли какие-то линуксоиды и обвинили мсфт в том, что так уже называется Chicken Scheme Compiler :D
А вы уверены про "extra field" 4 байта? Если моя память меня не подводит лейаут у строки как раз [8b header][8b pMT][4b Length][data...
И ещё у вас ссылки на исходную имплементацию NativeAOT, это немного другое чем CLR/JIT
Я бы настойчиво не рекомендовал такое делать для чего угодно кроме как струтур/примитивов без полей reference типа (и то, даже в структурах можно наступить на грабли unaligned read). Это вам кажется что вы ловко что-то скастили, а по факту могли создать GC Hole который взорвет ваш код отложенной раз в 100 запусков, поэтому Unsafe не зря называется Unsafe, и если F# (по вашим словам) позволяет это делать более свободно то это не звучит как реклама
в теории он должен быть супер дешевым на большинстве платформе где есть спец регистры указывающие на текущий поток, просто пока это не сделано в дотнете - я файлил ишью https://github.com/dotnet/runtime/issues/63619
Можете развернуть мысль?
1) Нет, там не только PGO
2) На шарплабе нет возможности выбирать рантаймы новее .NET 5.0 релиз.
свитч тут не причем, в том коде он разворачивается в обычные ифы розлином
В .NET 6.0 инлайнер стал намного агрессивнее (см. https://github.com/dotnet/runtime/pull/52708 и https://github.com/dotnet/runtime/pull/55478) и инлайнит такое без проблем теперь.
По поводу Equals(object,object) - у нас уже есть фикс для этого в dotnet/runtime, но пока это еще не вмерженно. Там необходим escape analysis чтобы понять что бокшенный value type никуда не убегает и можно не боксить, либо эмулировать боксинг но на стеке.
Да, но он девиртуализирован в .NET Core и не аллоцирует ;-)
Напишите проверку что аргумент ф-ции делится на 10 без остатка на чистом асме и сравните с Си.
Без телеметрии невозможно сделать нормально ни одно приложение в принципе (UX). Давно пора перестать истерить по этому поводу, но если сам факт использования тех же гугл или фб аналитик пугает — наверняка есть коробочные решения для своего сервера.
https://github.com/saagarjha/TSOEnabler
Кстати, раз тут вспомнили М1 — то там есть возможность нативно отключить для потока слабую модель памяти и использовать TSO ;-)
Думаю, вы спутали дизайн архитектур процессоров и написание очередного фронтенд фраемворка :-)
От мыслей о барьерах и слабой модели памяти вас не защитит и C# с Java :-)
Ага, инвестор их наличкой в офис в Минске принес в сумках :D
Это еще как здорово! Просто статья написана таким образом, что у читателя может сложиться мнение что решения от Google и Microsoft совсем никчемные.
Именно, думаю, можно за вечер натренировать сеточку распознавать хотдоги КРУЧЕ ЧЕМ В ГУГЛ!!1
Думаю, многие вернутся в россию после ввода 3% налога (хотя там спорно если сравнивать отчисления в пенсию)
"Это как Uber, только для %ниша%" — никогда не работает.
Кстати, а вы знали что на любое существительное уже существует жс фраемворк с таким же названием? :-)
А вообще мне это напоминает как C# Compiler с именем csc — так же пришли какие-то линуксоиды и обвинили мсфт в том, что так уже называется Chicken Scheme Compiler :D