Pull to refresh

Comments 13

Интересный опыт. Но зачем?

троллейбус_из_буханки.jpg
Как я написал в самом начале: «Это просто расширение границ, в которых воспринимается язык программирования». То есть интересный пример, показывающий некоторые аспекты внутреннего устройства
Вот это «зачем?» мне напомнило конфу по Python в Яндексе лет 5 назад когда на вопрос докладчика «кто знает устройство памяти у языка?» ответ знали только два человека сам докладчик и я, а знали потому что оба пишем суровое высокопроизводительное… и на C++.

P.S. очень точно написано название книги «Pro .NET Performance» ибо до Senior в .NET без этих знаний не добраться ;)
Это конечно круто, и я про это уже давно видел на докладе того же Голдштейна. Но это implementation details, неприменимые на практике. Тем более знания про таблицы методов, GC handles итд уже давно не тайна недоступная для изучения и «pro-only» тема.

Разработчики языка специально ввели unsafe как раз для случаев где implementation details имеет значение и влияет на производительность, так что про неприменимость на практике всё таки не соглашусь.
А что если на стеке завести структуру соответствующего размера, взять ее адрес(возможно ли?) и проинициализировать там класс? Тогджа можно без stackalloc. Может я чего не понимаю-я из тех кто стреляет из дробовика++ в ногу)
Обдумывал и такой вариант. Теоретически, можно даже просто переменных нужное количество завести, но это не динамически. Тут, конечно, мой косяк, поленился написать нормальный метод main. Просто суть в том, что так я могу выделить на стеке память под любой размер класса (то бишь для любого класса). А в варианте со структурами (или кучей переменных) придется заводить их на каждый случай жизни, никакой динамики.
А так да, если подобрать нужную структуру, то должно получиться!

Скоро в рантайм и так завезут авто аллоцирование реф-тайпов на стеке ;-) (escape analysis)

Пруфлинк? Нигде не нашел ничего про «скоро завезут».

Занятно! К картинкам можно добавить подпись, что все эти размеры полей и смещения — для 32 битного режима.

Да, согласен. Как доберусь до компутатора, сделаю где-нибудь пометку

Как с помощью UB сделать UB, которое сделает UB там, где его никто не ожидает.
Sign up to leave a comment.

Articles

Change theme settings