Pull to refresh
68
9.7
nagg@Nagg

Разработчик

Send message

не всех, а только от кэшбонуса, по факту сумма очень небольшая

Не то чтобы сильно затратный. В общем случае - это просто бамп поинтера с установкой пары полей

Нет, нужно явно указать GC что это куча, пусть и не управляемая. Для этого есть внутренние апишки, можете глянуть пример тут https://twitter.com/EgorBo/status/1706316706316996947
К тому же, вы не можете в таких объектах хранить ссылки на объекты из нормальной кучи, только из вашей же неуправляемой, как минимум потому что GC не будет ее сканить

А вы уверены про "extra field" 4 байта? Если моя память меня не подводит лейаут у строки как раз [8b header][8b pMT][4b Length][data...

И ещё у вас ссылки на исходную имплементацию NativeAOT, это немного другое чем CLR/JIT

В F#, Unsafe.As даёт возможность небезопасно кастить любую область памяти во что угодно и работать с ней как с любым типом. C# такие выкрутасы делать не даёт.

Я бы настойчиво не рекомендовал такое делать для чего угодно кроме как струтур/примитивов без полей 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). Давно пора перестать истерить по этому поводу, но если сам факт использования тех же гугл или фб аналитик пугает — наверняка есть коробочные решения для своего сервера.

Кстати, раз тут вспомнили М1 — то там есть возможность нативно отключить для потока слабую модель памяти и использовать TSO ;-)

Думаю, вы спутали дизайн архитектур процессоров и написание очередного фронтенд фраемворка :-)

От мыслей о барьерах и слабой модели памяти вас не защитит и C# с Java :-)

Ага, инвестор их наличкой в офис в Минске принес в сумках :D

Это еще как здорово! Просто статья написана таким образом, что у читателя может сложиться мнение что решения от Google и Microsoft совсем никчемные.

Именно, думаю, можно за вечер натренировать сеточку распознавать хотдоги КРУЧЕ ЧЕМ В ГУГЛ!!1

Information

Rating
694-th
Registered
Activity