Как стать автором
Обновить
16
0

Разработчик

Отправить сообщение

Удивлён, что никто не рассказал про http://www.trakt.tv
Есть отличный плагин для коди, много лет пользуюсь, и там вся статистика есть.

Капец! Шикарная штука, спасибо, не думал из статьи по Питону найти отличную фишку для C# :)

В общем проверил, да JIT заоптимизировал в регистр:



Первый парамет тоже всегда через ecx приходит, так что стек используется только для бекапа регистов и то только 2-х регистров.
Но в IL все ещё стек потому что регистров нет, но и локальныз перменных нет :)

Я проверил, листинги ассемблера большие даже в релизе, поэтому приводить не буду, там даже конструкторы заинлайнились. Добавил конструктор, чтобы он меньше оптимизировал, так JIT его всё равно заинлайнил. В общем, по IL коду сразу видно, что независимо от ветвлений, все локальные переменные объявляются сразу в заголовке, что логично:



А по дизассемблеру видно что место выделяется сразу, JIT даже не переиспользовал место в зависимости от ветвлений, хотя точно мог это сделать, кто его знает какие оптимизации он делает.
Если увеличить размер первой структуру то и место в стеке резервируется большее.
В общем магии нет, и выделения на стеке не происходит динамически, а фиксированно и известно в самом методе при его старте в виде константы.


В общем смысле вы правы. JIT действительно может сделать много оптимизаций включая анбоксинг в регистр. Но это уже то как JIT решит.
Сам по себе IL (промежуточный язык) это стекавая машина, т. е. в IL весь анбоксинг всегда проходит через стек, особенность без регистровой виртуальной машины, а вот уже потом JIT может замаппить это на регистры.

Конечно! Только в данном случае это будет разделяемая память. Т.е. выделится один кусок стека для одной ветки в нем будет a, для другой b. Ну и это уже на совести jit'а. Может выделить место и для обоих структур.
Вы поймите, что зарезервировать стек один раз на число просчитанное компилятор быстрее и проще, чем делать это динамически в рантайме.
Стек всегда двигается то вверх, то вниз. И управлять им соответственно просто, это вам не динамическая память. Поэтому все и стараются уменьшить работу с ним до минимума для оптимизации.
Буду за компом посмотрю ассемблерный и il-овский код.

Да, golang так делает например. Но мы же про C# сейчас :)


А расскажите пожалуйста когда анбоксин происходит не на стек? Я действительно не знаю таких случаев.
Во всех случая, что я знаю, анбоксин всегда проходит через стек.

Даже более того. Так как это стандратная операция про выделения места для локальных переменных. В ассемблере ввели команду enter которая правильно выделяет память на стеке на старте метода.
И нет смысла лишний раз что-то выделять когда это можно сделать один раз.

Память на стеке уже выделена, потому что когда метод стартует он уже знает, сколько у него локальных переменных и для них всех уже есть место на стеке.
Зачем лишний раз выделять память на стеке когда размер итак известен в момент компиляции.


Динамическая она потому что меняеется во время программы, а вот информация о размере всех переменных метода на стеке есть на момент компиляции.


Память на стеке выделяеть только stackallock и то в unsafe режиме.

Уже 2 года АРМБиан работает не запуская дебагер :)

В общем я полностью доволен армбианом. Плюс батарейка на кубике стоит, так что аптайм у него просто гигантский.

Ну и веник 2Тб и гигабитной сеткой — это просто шикарно. Упирается в самбу, но 30 Мб/с выдаёт стабильно.

Есть ещё пару разберей, но они просто поиграться, с кубиком не сравниться.

Но вообще да до армбиана, это было та ещё жесть, по сравнению с разбери. С другой стороны видео драиверов всё равно ещё нет на сколько я знаю, всё что есть отдельная жесть. Но как маленький НАС — это идеально и дешевое решение.

Хотя сейчас наверное за те же деньги можно и х86 купить.
И я сделал вывод, что решить проблему без решарпера невозможно.

Я даже подумать не мог что можно мои слова так понять :) Спасибо за разъяснение.
Я же всего лишь хотел показать, что при хорошем инструменте проблема решается в считанные минуты на практически любого объёма проекте.


И дальше я утверждал, что если вы привыкли работать без решарпера — это ваше право. Но я считал глупым не пользоваться хорошими инструментами которые облегчают вашу жизнь. И если работадатель этого не понимает то это очень плохо, и я бы поменял работадателя.


Аналогично я не прошу WebStorm, мне хватает Visual Studio Code для работы с JavaScript. Потому что он стоит денег, а так как я залажу в JS код в наших проектах в лучшем случает раз в месяц, то мне реально не нужен WebStorm на постоянной основе. Но я уверен, что с ним я бы даже те мелкие таски делал бы быстрее. Но смысла в этом мало.


Так что мой посыл был прост. Если ты .NET разработчик то решарпер — это маст хэв. Если работадатель не может тебе этого дать, то нужно от него уходить.


В ваших же комментариях я вижу только:


Независимо от времени — сейчас, завтра, или позавчера — я буду оспаривать идею о том, что очень тяжело жить без вспомогательного инструмента.

И я этого не могу понять, почему же все не пишут просто в блокноте? Т.е. вы как бы утверждаете, что качество кода совсем не завист где я его пишу, может и подсветка синтаксиса вам не нужна?

Доступ к публикации закрыт :(

Хотя вопрос наверное не корректен, так как вы использовали idea.
Так что не важно, тему стоит закрывать. Простите если обидел.

Я так и не смог понять вы .NET разработчик или нет?
Если нет, то я не могу понять как вы можете рассуждать о жизни без решарпера. Потому что я знаю, что это за ад.


Но вместо разговоров/споров нужно проводить опрос.
То что вы считаете, что можно прожить без решарпера — это ваше мнение. И оно не мнение большинства.


Когда у нас в компании задумались о отмене решарпера, ибо дорого, то вопрос решился в течении 2-3 дней, больше такой вопрос не поднимается. И это явный признак того что без решарпера жизнь ад. Ибо взбунтовались почти все, остальные жаловались устно на перекупах. И вот поэтому я сужу как мнение большинства, аналогичную информацию знаю из других организаций. И они разделяют моё мнение по поводу решарпера.


Я так и не понял вашу идею, но согласен, что дальше "спорить" безсмысленно.

Да да, ни сколько не хотел обидеть. За статью и опрос спасибо.

Вот вы серьёзно сравниваете разный материал ручек в отвертках с целыми разными инструментами, такими как: яма и подьёмник хотя бы?
Хотя даже это сравнение слишком маленькое. На самом деле разница между горажом с одной переноской и самым дешевым набором головок и целой мастерской с кучей инструмента включая динамометрические ключи магниты зеркала держатели, куча тестеров и многое другое. А вы своей аналогией сравниваете notepad с темной темой и notepad со светлой темой.


И вы никак не поймёте, что я не верю, что есть работадатель который предоставит железо на котором PyCharm не тормозит, 2 нормальных IPS монитора, удобное кресло, много свободно места, а не толканием локтями с соседом, и зажмётся на лицензию решарпера. Серьёзно?


Скорее всего он зажмётся на всё, но проще всего это узнать лицензией на решарпер :), шучу конечно. Аналогично наличие лицензии не говорит о хорошом рабочем месте. И если вы читали мои высказывания выше, то заметели, что я говорил, про то что вам стоит менять работадателя даже если у вас на компе тормозит PyCharm, а не только потому что у него только решарпера нет.
И я не собираюсь работать на табуретке без спинки, лишь бы решарпер был.


Естественно всё есть в савокупности, но вы как будто утверждаете, что есть работадатели которые сделают вашу работу комфортной, но забудут выдать вам основной инструмент который увеличит вашу продуктивность. "Вот вам отвёртка и больше ничего не получите", но работайте в просторной мастерской с бесплатным кофе и чаем. Смешно же. И если вдруг такие есть, то я все ещё советую менять место работы. Хотя если вам там платят в 2 раза больше, ну я бы наверное тоже пожил без решарпера. Или как вы говорите там очень интересные проекты, то скорее всего я бы тоже пожил без решарпера, но сказок не бывает. Не может быть всё хорошо, но не быть решарпера… Ну не верю я....


И опять же, я же не говорю, что всё что нужно C# девелоперу это только решарпер, где вы это прочитали? Я говорю, что работать без решарпера, даже на стуле за 1000$, я не стану.

Ну во-первых vim прекрасный инструмент.
Во-вторых есть множество похожих историй из других областей, про слесаря у которого была сломана рука и только он мог долезть на производстве до нужных мест. Про электрика с косятной ногой который не становился на резиновый коврик… много-много и других историй.


В каждом правиле есть исключения, даже в этом.


Я считаю решарпер отличным инструментом и мне без него будет очень не удобно работать. Надеюсь эту мысль я донёс. И у нас у всех .NET разработчиков есть решарпер. Если мы проведём опрос о том нужен или нет решарпер, или его можно заменить на что-то другое. То я уверен на 90%, что большинству нужен решарпер для работы. Есть те кто открывают студию раз в неделю, вот они могут и без него.


И я серьязно не могу понять, почему вы оспариваете, то, что без решарпера сейчас очень тяжело жить. И Code Rush как и чистая студия ему совсем не замена.


Если вы мне предоставите реальные альтернативы, то я буду вам очень признателен.

Простите, но я серьёзно не уловил вашу мысль про другие инструменты. Это раз.
Во-вторых, я согласен, что можно быть хорошим программистом и писать хоть в блокноте. Но, я считаю, глупо не пользоваться инструментами, которые облегчают вам жизнь. И я не встречал таких программистов.

А вы думаете что у меня проектики из двух файлов, забавно :)

Так а я и не говорил, что решарпер это единственный верный и правильный инструмент, но мне с ним удобнее чем с Code Rush например. А может я и плохой программист раз не знаю других, вот серъёзно, я не назову других таких же крутых инструментов для студии.


Я лишь говорил, что мне без решарпера жить плохо, и если его заменят хотя бы на Code Rush, то это будет терпимым решением.


Ну и ещё несколько провокационный вопрос: а какие качества программиста важнее, умение писать код, или умение пользоваться инструментом для его написания?

Ну, я думаю, ответ очевиден — важно умение писать код. Но я ни разу не видел плохого программиста, который умеет пользоваться инструментом. Он ни код не пишет, ни решарпер ему не нужен. Если я плохой автослесарь, то мне подьёмник не поможет от слова совсем.


А вот хороших кодеров, которые не умеют пользоваться решарпером просто полно! А хорошие программисты умеют им пользоваться.

Информация

В рейтинге
Не участвует
Откуда
Гродно, Гродненская обл., Беларусь
Дата рождения
Зарегистрирован
Активность